[Checkins] [zopefoundation/ZODB] 3580dd: Speed up ZODB.blob.BushyLayout.oid_to_path on Pyth...

GitHub noreply at github.com
Fri Apr 14 17:43:41 CEST 2017


  Branch: refs/heads/master
  Home:   https://github.com/zopefoundation/ZODB
  Commit: 3580ddd815d7c068d09a7e6d5024f6c7d8aa8a52
      https://github.com/zopefoundation/ZODB/commit/3580ddd815d7c068d09a7e6d5024f6c7d8aa8a52
  Author: Jason Madden <jason+github at nextthought.com>
  Date:   2017-04-14 (Fri, 14 Apr 2017)

  Changed paths:
    M CHANGES.rst
    M src/ZODB/blob.py

  Log Message:
  -----------
  Speed up ZODB.blob.BushyLayout.oid_to_path on Python 3 (#161)

Profiling (https://github.com/zodb/zodbshootout/pull/32/) showed that
this method was the only blob-related method that showed up in a test
of creating blobs, other than those that actually performed IO.

With this change its total and cumulative time drops from 0.003/0.004
to 0.001/0.002 in a small benchmark. Blobs created per second shows a
small but consistent improvement.

Before:

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
      100    0.005    0.000    0.005    0.000 {built-in method rename}
      100    0.004    0.000    0.004    0.000 {function BlobFile.close at 0x1080d3a60}
      200    0.003    0.000    0.004    0.000 blob.py:576(oid_to_path)
      101    0.003    0.000    0.003    0.000 {built-in method mkdir}
      100    0.002    0.000    0.002    0.000 blob.py:333(__init__)
      402    0.002    0.000    0.005    0.000 {method 'dump' of '_pickle.Pickler' objects}
  1    0.002    0.002    0.034    0.034 Connection.py:553(_store_objects)
      201    0.002    0.000    0.002    0.000 {built-in method stat}
     5633    0.001    0.000    0.002    0.000 {built-in method isinstance}

After:

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
      100    0.005    0.000    0.005    0.000 {built-in method rename}
      101    0.005    0.000    0.005    0.000 {built-in method mkdir}
      100    0.004    0.000    0.004    0.000 {function BlobFile.close at 0x10636aa60}
      402    0.002    0.000    0.005    0.000 {method 'dump' of '_pickle.Pickler' objects}
      100    0.002    0.000    0.002    0.000 blob.py:333(__init__)
  1    0.002    0.002    0.035    0.035 Connection.py:553(_store_objects)
      201    0.002    0.000    0.002    0.000 {built-in method stat}
     4033    0.001    0.000    0.001    0.000 {built-in method isinstance}
   ....
      200    0.001    0.000    0.002    0.000 blob.py:576(oid_to_path)




More information about the checkins mailing list