Skip to content

Instantly share code, notes, and snippets.

@guewen
Last active May 4, 2022 08:38
Show Gist options
  • Save guewen/a4a2eba5d128b4ed3129866f80571fbd to your computer and use it in GitHub Desktop.
Save guewen/a4a2eba5d128b4ed3129866f80571fbd to your computer and use it in GitHub Desktop.
benchmark odoo recordset union
# to run in odoo shell
import timeit
code_recordset = """
result = env['product.product'].browse()
for record in records:
result |= record
"""
code_set = """
result = set()
for record in records:
result.add(record.id)
env['product.product'].browse(result)
"""
timeit.repeat(code_recordset, setup="records = env['product.product'].browse(range(1,1001))", number=100, globals={'env': env})
timeit.repeat(code_set, setup="records = env['product.product'].browse(range(1,1001))", number=100, globals={'env': env})
@sebalix
Copy link

sebalix commented May 4, 2022

Result on a 14.0, same story:

>>> timeit.repeat(code_recordset, setup="records = env['product.product'].browse(range(1,1001))", number=100, globals={'env': env})
[14.343225489006727, 14.607701032000477, 14.82277410599636, 15.232663155999035, 14.98800701899745]
>>> timeit.repeat(code_set, setup="records = env['product.product'].browse(range(1,1001))", number=100, globals={'env': env})
[0.18435767899791244, 0.14919681400351692, 0.15227286599110812, 0.15313698099635076, 0.16125268299947493]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment