Rev 2614: (John Arbash Meinel) Implement _KnitIndex._load_data in pyrex. in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Fri Jul 13 05:12:17 BST 2007


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 2614
revision-id: pqm at pqm.ubuntu.com-20070713041212-ar46c24wgu0jhtm5
parent: pqm at pqm.ubuntu.com-20070713031727-kcz297vvphee2hhg
parent: john at arbash-meinel.com-20070713022334-qb6ewgo6v4251yd9
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2007-07-13 05:12:12 +0100
message:
  (John Arbash Meinel) Implement _KnitIndex._load_data in pyrex.
added:
  bzrlib/_knit_load_data_c.pyx   knit_c.pyx-20070509143944-u42gy8w387a10m0j-1
  bzrlib/_knit_load_data_py.py   _knit_load_data_py.p-20070629000948-9a0nh4s118bi5y8n-1
  bzrlib/benchmarks/bench_knit.py bench_knit.py-20070509145850-pan5jnd3hl7mfdya-1
modified:
  .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/benchmarks/__init__.py  __init__.py-20060516064526-eb0d37c78e86065d
  bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
  bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
  bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
  bzrlib/smart/server.py         server.py-20061110062051-chzu10y32vx8gvur-1
  bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
  bzrlib/tests/test_commit.py    test_commit.py-20050914060732-279f057f8c295434
  bzrlib/tests/test_errors.py    test_errors.py-20060210110251-41aba2deddf936a8
  bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
  bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
  bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
  bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
  bzrlib/transport/chroot.py     chroot.py-20061011104729-0us9mgm97z378vnt-1
  bzrlib/transport/decorator.py  decorator.py-20060402223305-e913a0f25319ab42
  bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
  bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
  bzrlib/transport/local.py      local_transport.py-20050711165921-9b1f142bfe480c24
  bzrlib/transport/memory.py     memory.py-20051016101338-cd008dbdf69f04fc
  bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
  bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
  setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
    ------------------------------------------------------------
    revno: 2484.1.25
    merged: john at arbash-meinel.com-20070713022334-qb6ewgo6v4251yd9
    parent: john at arbash-meinel.com-20070705193928-xtm8nh4ucc8qosdn
    parent: pqm at pqm.ubuntu.com-20070705224207-7pslqt12ofh4vnzx
    parent: pqm at pqm.ubuntu.com-20070713012635-04mqh3w41pjxl5mg
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Thu 2007-07-12 21:23:34 -0500
    message:
      [merge] bzr.dev 2612
    ------------------------------------------------------------
    revno: 2484.1.24
    merged: john at arbash-meinel.com-20070705193928-xtm8nh4ucc8qosdn
    parent: john at arbash-meinel.com-20070702183631-ylkveb8ux8imm6cx
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Thu 2007-07-05 14:39:28 -0500
    message:
      Add direct tests of how we handle incomplete/'broken' lines
    ------------------------------------------------------------
    revno: 2484.1.23
    merged: john at arbash-meinel.com-20070702183631-ylkveb8ux8imm6cx
    parent: john at arbash-meinel.com-20070629171416-9vwyxcz9w0xt39z0
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Mon 2007-07-02 13:36:31 -0500
    message:
      When we append a new line, don't use text mode
    ------------------------------------------------------------
    revno: 2484.1.22
    merged: john at arbash-meinel.com-20070629171416-9vwyxcz9w0xt39z0
    parent: john at arbash-meinel.com-20070629163350-pfpsrmoz6edxjdm5
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Fri 2007-06-29 12:14:16 -0500
    message:
      Remove unused function definitions.
      This makes sure that we are only using functions we know that we need.
      The remaining functions should all be safe wrt nulls in the data, etc.
    ------------------------------------------------------------
    revno: 2484.1.21
    merged: john at arbash-meinel.com-20070629163350-pfpsrmoz6edxjdm5
    parent: john at arbash-meinel.com-20070629163115-f8f8032mkj6ntu0s
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Fri 2007-06-29 11:33:50 -0500
    message:
      Make sure we cast the long int back to a regular int
    ------------------------------------------------------------
    revno: 2484.1.20
    merged: john at arbash-meinel.com-20070629163115-f8f8032mkj6ntu0s
    parent: john at arbash-meinel.com-20070629161646-ufelk4s0m1ig5md8
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Fri 2007-06-29 11:31:15 -0500
    message:
      Remove the parent_str==NULL check since the caller is already being safe.
    ------------------------------------------------------------
    revno: 2484.1.19
    merged: john at arbash-meinel.com-20070629161646-ufelk4s0m1ig5md8
    parent: john at arbash-meinel.com-20070629160006-sdhws6bdttdbgua8
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Fri 2007-06-29 11:16:46 -0500
    message:
      Don't suppress the TypeError if it doesn't match our requirements.
    ------------------------------------------------------------
    revno: 2484.1.18
    merged: john at arbash-meinel.com-20070629160006-sdhws6bdttdbgua8
    parent: john at arbash-meinel.com-20070629154156-qqtkp5u94qiwl5ua
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Fri 2007-06-29 11:00:06 -0500
    message:
      Test that we properly verify the size and position strings.
    ------------------------------------------------------------
    revno: 2484.1.17
    merged: john at arbash-meinel.com-20070629154156-qqtkp5u94qiwl5ua
    parent: john at arbash-meinel.com-20070629153901-nxydiwh8t8ug76yl
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Fri 2007-06-29 10:41:56 -0500
    message:
      Workaround for Pyrex <0.9.5 and python >=2.5 incompatibilities.
      Before raising an exception, Pyrex checks that it is a valid exception object.
      However python 2.5 changed exceptions to be new-style classes, and this
      fails the Pyrex 0.9.4 check. Pyrex 0.9.5 has been updated to do it
      correctly.
      
      We just set knownFailure in the test suite when this happens.
      Note: You still get an exception, just TypeError instead of ValueError or IndexError.
      So the code path will still abort, but the user won't get as nice of a message.
    ------------------------------------------------------------
    revno: 2484.1.16
    merged: john at arbash-meinel.com-20070629153901-nxydiwh8t8ug76yl
    parent: john at arbash-meinel.com-20070629010927-jf6ybo016kpmb6y4
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Fri 2007-06-29 10:39:01 -0500
    message:
      Switch from strchr to memchr to ensure we never search all of memory.
    ------------------------------------------------------------
    revno: 2484.1.15
    merged: john at arbash-meinel.com-20070629010927-jf6ybo016kpmb6y4
    parent: john at arbash-meinel.com-20070629003908-0u62qx1u883o81pw
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Thu 2007-06-28 20:09:27 -0500
    message:
      Add a NEWS entry describing the performance improvement
    ------------------------------------------------------------
    revno: 2484.1.14
    merged: john at arbash-meinel.com-20070629003908-0u62qx1u883o81pw
    parent: john at arbash-meinel.com-20070629003100-xthewxf3hpdes9ix
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Thu 2007-06-28 19:39:08 -0500
    message:
      Fix up the benchmarks (bench_knit.py) for the new function locations.
      I see something between 2-3x faster for reading .kndx files.
    ------------------------------------------------------------
    revno: 2484.1.13
    merged: john at arbash-meinel.com-20070629003100-xthewxf3hpdes9ix
    parent: john at arbash-meinel.com-20070629001013-puyhbgbq0pgzvezu
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Thu 2007-06-28 19:31:00 -0500
    message:
      Add a test that KnitCorrupt is raised when parent strings are invalid.
      And fix *both* implementations so that they do the right thing.
    ------------------------------------------------------------
    revno: 2484.1.12
    merged: john at arbash-meinel.com-20070629001013-puyhbgbq0pgzvezu
    parent: john at arbash-meinel.com-20070628235539-ozvr23tlntgb7jhx
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Thu 2007-06-28 19:10:13 -0500
    message:
      Switch the layout to use a matching _knit_load_data_py.py and _knit_load_data_c.pyx
    ------------------------------------------------------------
    revno: 2484.1.11
    merged: john at arbash-meinel.com-20070628235539-ozvr23tlntgb7jhx
    parent: john at arbash-meinel.com-20070509200435-buae2sjnyn2olunc
    parent: pqm at pqm.ubuntu.com-20070628225335-facf1886gxehj2w1
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Thu 2007-06-28 18:55:39 -0500
    message:
      [merge] bzr.dev 2563 and add integer checking to the extension.
    ------------------------------------------------------------
    revno: 2484.1.10
    merged: john at arbash-meinel.com-20070509200435-buae2sjnyn2olunc
    parent: john at arbash-meinel.com-20070509200141-6cnhjp8ldduugjxr
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Wed 2007-05-09 15:04:35 -0500
    message:
      Revert previous change since it doesn't help
    ------------------------------------------------------------
    revno: 2484.1.9
    merged: john at arbash-meinel.com-20070509200141-6cnhjp8ldduugjxr
    parent: john at arbash-meinel.com-20070509194537-3h1zslf0rmozzgsq
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Wed 2007-05-09 15:01:41 -0500
    message:
      Moving check_header into C shows no appreciable advantage, even though
      it means we remove a f.read() call.
    ------------------------------------------------------------
    revno: 2484.1.8
    merged: john at arbash-meinel.com-20070509194537-3h1zslf0rmozzgsq
    parent: john at arbash-meinel.com-20070509193428-rkwiu3vbglrdyz47
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Wed 2007-05-09 14:45:37 -0500
    message:
      A bit of cleanup. remove unused variables.
    ------------------------------------------------------------
    revno: 2484.1.7
    merged: john at arbash-meinel.com-20070509193428-rkwiu3vbglrdyz47
    parent: john at arbash-meinel.com-20070509184520-hd6la926t5hfshbr
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Wed 2007-05-09 14:34:28 -0500
    message:
      minor cleanup
    ------------------------------------------------------------
    revno: 2484.1.6
    merged: john at arbash-meinel.com-20070509184520-hd6la926t5hfshbr
    parent: john at arbash-meinel.com-20070509182208-7xygjy8m8nwdfhm2
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Wed 2007-05-09 13:45:20 -0500
    message:
      Use direct functions when possible, and avoid extra dict lookups.
        test_read_50k_index_c           338ms
        test_read_50k_index_c_again     351ms
        test_read_50k_index_py          901ms
        test_read_50k_index_py_again   1023ms
    ------------------------------------------------------------
    revno: 2484.1.5
    merged: john at arbash-meinel.com-20070509182208-7xygjy8m8nwdfhm2
    parent: john at arbash-meinel.com-20070509164944-8dzfnsgdamvujo4b
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Wed 2007-05-09 13:22:08 -0500
    message:
      Simplistic implementations of custom parsers for options and parents
      drops us down to under half the time.
      Also, defining a function as 'cdef int foo() except -1'
      allows any exceptions to be propagated, rather than giving 'unraisable exception' warnings.
    ------------------------------------------------------------
    revno: 2484.1.4
    merged: john at arbash-meinel.com-20070509164944-8dzfnsgdamvujo4b
    parent: john at arbash-meinel.com-20070509152053-6wm1c1cg9wstaezq
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Wed 2007-05-09 11:49:44 -0500
    message:
      First step towards custom parsing.
      By steping through the main string instead of splitting into lines
      we save approx 40%
        test_read_50k_index_c          617ms
        test_read_50k_index_c_again    592ms
        test_read_50k_index_py         895ms
        test_read_50k_index_py_again  1038ms
    ------------------------------------------------------------
    revno: 2484.1.3
    merged: john at arbash-meinel.com-20070509152053-6wm1c1cg9wstaezq
    parent: john at arbash-meinel.com-20070509151224-20uys53nsfunfv5k
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Wed 2007-05-09 10:20:53 -0500
    message:
      Change to 50k entries, since this puts us in the 1s ballpark
    ------------------------------------------------------------
    revno: 2484.1.2
    merged: john at arbash-meinel.com-20070509151224-20uys53nsfunfv5k
    parent: john at arbash-meinel.com-20070509144042-9uyruriejyp98751
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Wed 2007-05-09 10:12:24 -0500
    message:
      Add benchmarks for loading a knit index with a lot of records.
      Because of (deterministic) variations, the benchmarks are run 2 times.
      For some reason, the second run of a benchmark is approx 40ms faster,
      and the 3rd run is slow again.
    ------------------------------------------------------------
    revno: 2484.1.1
    merged: john at arbash-meinel.com-20070509144042-9uyruriejyp98751
    parent: pqm at pqm.ubuntu.com-20070508203256-wcxwdphd1y2psezh
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: knit_index_pyrex
    timestamp: Wed 2007-05-09 09:40:42 -0500
    message:
      Add an initial function to read knit indexes in pyrex.
      Update the LowLevelKnitIndex tests so that they can be run
      against both the python and pyrex implementations.

Diff too large for email (1645 lines, the limit is 1000).



More information about the bazaar-commits mailing list