[lxml-dev] New benchmark results
Here, we go, this is *much* better. I looked over one of the bottlenecks in the API, the _elementFactory function. I found that the main problem was my implementation of the namespace element lookup, which translated to extremely inefficient C code. I rewrote that with explicit Python API calls and that gives us between 10% and 400% speed up in the benchmarks, depending on the API intensiveness of the tests. Note that lxml is faster than ElementTree in the benchmark tree setup now. Now, the main area where lxml is substantially slower than ElementTree is when moving elements between documents by hand. This is rare and can be avoided pretty often, I guess. Note that moving an entire XML tree to a new document in the obvious one-step operation is *not* so expensive in lxml. What matters is the overhead of creating a Python representation of elements, which is purely API related. Everything that runs internally runs mainly at the speed of libxml2. A special beauty here is the deepcopy benchmark. There still is a certain overhead in the API-to-libxml2 mapping, so programs that extensively create elements one after the other are better off with ElementTree and cElementTree. This advantage already diminishes when SubElement is used, for which lxml is now faster than ElementTree. In all other cases, I wouldn't see a major advantage for the two. Especially none that should keep people from using lxml. Depending on the tree size/structure and the operation, lxml and cElementTree can both take the lead. Since the APIs are largely compatible, I see the main decision maker as follows: * If your problem is small and not performance critical, use whatever you like * If you create tons of independent elements, use cElementTree or consider changing your algorithms :) * If your program is mainly API bound, use cElementTree * If your program is dominated by large XML structures, try both lxml and cElementTree * If you often need to copy large trees, consider lxml * If you need features like XPath, XSLT, RNG, custom APIs, ... - use lxml * If you need those features and more speed, send a patch to this list Have fun, Stefan Preparing test suites and trees ... Running benchmark on etree, ElementTree, cElementTree Setup times for trees in seconds: etree : 0.1827, 0.1651, 0.0371, 0.0008 ElementTree : 0.2251, 0.2564, 0.0574, 0.0010 cElementTree : 0.0378, 0.0176, 0.0088, 0.0001 etree append_elements (T1 ) 2.1396 2.2991 2.2673 msec/pass, best: 2.1396 ElementTree append_elements (T1 ) 0.3253 0.3294 0.3451 msec/pass, best: 0.3253 cElementTree append_elements (T1 ) 0.1065 0.0814 0.0795 msec/pass, best: 0.0795 etree append_elements (T2 ) 9.5490 9.8586 9.8201 msec/pass, best: 9.5490 ElementTree append_elements (T2 ) 4.9283 4.9106 4.9252 msec/pass, best: 4.9106 cElementTree append_elements (T2 ) 0.7983 0.8127 0.8101 msec/pass, best: 0.7983 etree append_elements (T3 ) 0.1166 0.1110 0.1099 msec/pass, best: 0.1099 ElementTree append_elements (T3 ) 0.1056 0.1081 0.1097 msec/pass, best: 0.1056 cElementTree append_elements (T3 ) 0.0308 0.0326 0.0314 msec/pass, best: 0.0308 etree append_elements (T4 ) 0.6297 0.4669 0.4662 msec/pass, best: 0.4662 ElementTree append_elements (T4 ) 0.2243 0.2092 0.2179 msec/pass, best: 0.2092 cElementTree append_elements (T4 ) 0.0375 0.0376 0.0355 msec/pass, best: 0.0355 etree append_from_document (T1,T2 ) 17.5267 12.2076 12.4225 msec/pass, best: 12.2076 ElementTree append_from_document (T1,T2 ) 7.2593 8.3792 8.1089 msec/pass, best: 7.2593 cElementTree append_from_document (T1,T2 ) 0.4959 0.5207 0.4878 msec/pass, best: 0.4878 etree append_from_document (T1,T3 ) 0.8263 0.8588 0.8604 msec/pass, best: 0.8263 ElementTree append_from_document (T1,T3 ) 0.0907 0.0806 0.0843 msec/pass, best: 0.0806 cElementTree append_from_document (T1,T3 ) 0.0324 0.0324 0.0348 msec/pass, best: 0.0324 etree append_from_document (T1,T4 ) 1.6374 1.8921 1.7790 msec/pass, best: 1.6374 ElementTree append_from_document (T1,T4 ) 0.1675 0.1767 0.1696 msec/pass, best: 0.1675 cElementTree append_from_document (T1,T4 ) 0.0590 0.0578 0.0561 msec/pass, best: 0.0561 etree append_from_document (T2,T1 ) 46.6267 44.5527 33.6675 msec/pass, best: 33.6675 ElementTree append_from_document (T2,T1 ) 1.6526 1.2971 1.9397 msec/pass, best: 1.2971 cElementTree append_from_document (T2,T1 ) 0.0589 0.0589 0.0579 msec/pass, best: 0.0579 etree append_from_document (T2,T3 ) 0.8258 0.8747 0.8474 msec/pass, best: 0.8258 ElementTree append_from_document (T2,T3 ) 0.0849 0.0896 0.0837 msec/pass, best: 0.0837 cElementTree append_from_document (T2,T3 ) 0.0333 0.0438 0.0326 msec/pass, best: 0.0326 etree append_from_document (T2,T4 ) 1.6711 1.8064 1.8190 msec/pass, best: 1.6711 ElementTree append_from_document (T2,T4 ) 2.0507 2.4498 2.7369 msec/pass, best: 2.0507 cElementTree append_from_document (T2,T4 ) 0.0447 0.0477 0.0477 msec/pass, best: 0.0447 etree append_from_document (T3,T1 ) 23.7482 23.7627 24.5559 msec/pass, best: 23.7482 ElementTree append_from_document (T3,T1 ) 3.3216 3.7194 3.4479 msec/pass, best: 3.3216 cElementTree append_from_document (T3,T1 ) 0.0639 0.1068 0.0728 msec/pass, best: 0.0639 etree append_from_document (T3,T2 ) 9.1862 9.7372 10.1377 msec/pass, best: 9.1862 ElementTree append_from_document (T3,T2 ) 6.2612 7.0192 6.8504 msec/pass, best: 6.2612 cElementTree append_from_document (T3,T2 ) 0.4900 0.5061 0.5034 msec/pass, best: 0.4900 etree append_from_document (T3,T4 ) 0.1238 0.1324 0.1245 msec/pass, best: 0.1238 ElementTree append_from_document (T3,T4 ) 0.1831 0.1520 0.1646 msec/pass, best: 0.1520 cElementTree append_from_document (T3,T4 ) 0.0322 0.0579 0.0326 msec/pass, best: 0.0322 etree append_from_document (T4,T1 ) 23.8607 24.0458 24.7333 msec/pass, best: 23.8607 ElementTree append_from_document (T4,T1 ) 0.1792 0.1784 0.1760 msec/pass, best: 0.1760 cElementTree append_from_document (T4,T1 ) 0.0677 0.0696 0.0694 msec/pass, best: 0.0677 etree append_from_document (T4,T2 ) 9.6456 10.0888 10.2759 msec/pass, best: 9.6456 ElementTree append_from_document (T4,T2 ) 4.9667 5.1865 5.2433 msec/pass, best: 4.9667 cElementTree append_from_document (T4,T2 ) 0.4923 0.5122 1.4466 msec/pass, best: 0.4923 etree append_from_document (T4,T3 ) 0.5469 0.5745 0.5633 msec/pass, best: 0.5469 ElementTree append_from_document (T4,T3 ) 0.0769 0.0754 0.0798 msec/pass, best: 0.0754 cElementTree append_from_document (T4,T3 ) 0.0248 0.0252 0.0253 msec/pass, best: 0.0248 etree clear (T1 ) 6.8760 6.9473 6.9588 msec/pass, best: 6.8760 ElementTree clear (T1 ) 17.0238 17.1312 17.4397 msec/pass, best: 17.0238 cElementTree clear (T1 ) 2.1736 2.1512 2.1850 msec/pass, best: 2.1512 etree clear (T2 ) 6.9850 7.1344 7.1863 msec/pass, best: 6.9850 ElementTree clear (T2 ) 28.4882 17.6843 17.8492 msec/pass, best: 17.6843 cElementTree clear (T2 ) 2.4351 2.4483 2.4590 msec/pass, best: 2.4351 etree clear (T3 ) 0.5403 0.5393 0.5486 msec/pass, best: 0.5393 ElementTree clear (T3 ) 4.3183 4.3355 4.3676 msec/pass, best: 4.3183 cElementTree clear (T3 ) 0.3575 0.3696 0.3694 msec/pass, best: 0.3575 etree clear (T4 ) 0.0243 0.0230 0.0225 msec/pass, best: 0.0225 ElementTree clear (T4 ) 0.0497 0.0468 0.0491 msec/pass, best: 0.0468 cElementTree clear (T4 ) 0.0065 0.0069 0.0066 msec/pass, best: 0.0065 etree create_subelements (T1 ) 0.4447 0.4291 0.4390 msec/pass, best: 0.4291 ElementTree create_subelements (T1 ) 0.4023 0.4029 0.4081 msec/pass, best: 0.4023 cElementTree create_subelements (T1 ) 0.0650 0.0624 0.0642 msec/pass, best: 0.0624 etree create_subelements (T2 ) 6.4463 6.5367 6.4625 msec/pass, best: 6.4463 ElementTree create_subelements (T2 ) 6.4680 6.4867 6.5039 msec/pass, best: 6.4680 cElementTree create_subelements (T2 ) 0.5437 0.5510 0.5644 msec/pass, best: 0.5437 etree create_subelements (T3 ) 0.0982 0.0962 0.0966 msec/pass, best: 0.0962 ElementTree create_subelements (T3 ) 0.1408 0.1207 0.1170 msec/pass, best: 0.1170 cElementTree create_subelements (T3 ) 0.0279 0.0268 0.0265 msec/pass, best: 0.0265 etree create_subelements (T4 ) 0.3160 0.3148 0.3172 msec/pass, best: 0.3148 ElementTree create_subelements (T4 ) 0.3121 0.2866 0.2813 msec/pass, best: 0.2813 cElementTree create_subelements (T4 ) 0.0210 0.0210 0.0212 msec/pass, best: 0.0210 etree deepcopy (T1 ) 17.9121 19.2798 18.9026 msec/pass, best: 17.9121 ElementTree deepcopy (T1 ) 805.1189 805.3489 872.4165 msec/pass, best: 805.1189 cElementTree deepcopy (T1 ) 505.1526 479.0999 474.0529 msec/pass, best: 474.0529 etree deepcopy (T2 ) 30.3835 31.2109 31.1521 msec/pass, best: 30.3835 ElementTree deepcopy (T2 ) 1027.0189 1034.5323 1110.9516 msec/pass, best: 1027.0189 cElementTree deepcopy (T2 ) 534.4865 499.5629 523.3296 msec/pass, best: 499.5629 etree deepcopy (T3 ) 3.2103 3.1447 3.1190 msec/pass, best: 3.1190 ElementTree deepcopy (T3 ) 188.7364 189.6626 192.9635 msec/pass, best: 188.7364 cElementTree deepcopy (T3 ) 124.1634 121.2389 121.2373 msec/pass, best: 121.2373 etree deepcopy (T4 ) 0.6969 0.6899 0.7117 msec/pass, best: 0.6899 ElementTree deepcopy (T4 ) 4.4663 4.3800 4.4279 msec/pass, best: 4.3800 cElementTree deepcopy (T4 ) 3.1183 3.1667 3.0353 msec/pass, best: 3.0353 etree getchildren (T1 ) 21.8075 22.5544 22.9289 msec/pass, best: 21.8075 ElementTree getchildren (T1 ) 0.1317 0.1362 0.1310 msec/pass, best: 0.1310 cElementTree getchildren (T1 ) 0.9512 0.9820 0.9762 msec/pass, best: 0.9512 etree getchildren (T2 ) 20.1090 17.5955 17.8679 msec/pass, best: 17.5955 ElementTree getchildren (T2 ) 1.4564 1.4540 1.4398 msec/pass, best: 1.4398 cElementTree getchildren (T2 ) 1.3277 1.3638 1.3366 msec/pass, best: 1.3277 etree getchildren (T3 ) 0.0357 0.0358 0.0353 msec/pass, best: 0.0353 ElementTree getchildren (T3 ) 0.0633 0.0640 0.0679 msec/pass, best: 0.0633 cElementTree getchildren (T3 ) 0.0240 0.0254 0.0255 msec/pass, best: 0.0240 etree getchildren (T4 ) 0.1035 0.0940 0.0942 msec/pass, best: 0.0940 ElementTree getchildren (T4 ) 0.0671 0.0709 0.0690 msec/pass, best: 0.0671 cElementTree getchildren (T4 ) 0.0276 0.0272 0.0280 msec/pass, best: 0.0272 etree insert_from_document (T1,T2 ) 24.8505 24.1553 25.6988 msec/pass, best: 24.1553 ElementTree insert_from_document (T1,T2 ) 8.7017 9.8994 9.8052 msec/pass, best: 8.7017 cElementTree insert_from_document (T1,T2 ) 1.2120 1.2260 1.2225 msec/pass, best: 1.2120 etree insert_from_document (T1,T3 ) 1.0492 1.1782 1.3616 msec/pass, best: 1.0492 ElementTree insert_from_document (T1,T3 ) 0.0971 0.1012 0.1044 msec/pass, best: 0.0971 cElementTree insert_from_document (T1,T3 ) 0.0451 0.0489 0.0429 msec/pass, best: 0.0429 etree insert_from_document (T1,T4 ) 1.7054 1.8474 1.8518 msec/pass, best: 1.7054 ElementTree insert_from_document (T1,T4 ) 0.2471 0.2510 0.2550 msec/pass, best: 0.2471 cElementTree insert_from_document (T1,T4 ) 0.0815 0.0940 0.0868 msec/pass, best: 0.0815 etree insert_from_document (T2,T1 ) 32.2051 34.0006 34.0085 msec/pass, best: 32.2051 ElementTree insert_from_document (T2,T1 ) 2.2987 3.2959 2.1304 msec/pass, best: 2.1304 cElementTree insert_from_document (T2,T1 ) 0.1201 0.1238 0.1221 msec/pass, best: 0.1201 etree insert_from_document (T2,T3 ) 1.3658 1.2899 1.4140 msec/pass, best: 1.2899 ElementTree insert_from_document (T2,T3 ) 0.1069 0.1094 0.1085 msec/pass, best: 0.1069 cElementTree insert_from_document (T2,T3 ) 0.0470 0.0556 0.0524 msec/pass, best: 0.0470 etree insert_from_document (T2,T4 ) 2.6039 2.7250 2.7508 msec/pass, best: 2.6039 ElementTree insert_from_document (T2,T4 ) 2.2039 2.5299 2.5815 msec/pass, best: 2.2039 cElementTree insert_from_document (T2,T4 ) 0.1059 0.1134 0.1127 msec/pass, best: 0.1059 etree insert_from_document (T3,T1 ) 19.8009 25.0803 23.4647 msec/pass, best: 19.8009 ElementTree insert_from_document (T3,T1 ) 3.0262 4.1957 3.7703 msec/pass, best: 3.0262 cElementTree insert_from_document (T3,T1 ) 0.1040 0.1033 0.0954 msec/pass, best: 0.0954 etree insert_from_document (T3,T2 ) 15.1248 15.4261 16.6505 msec/pass, best: 15.1248 ElementTree insert_from_document (T3,T2 ) 7.8220 8.0915 8.5682 msec/pass, best: 7.8220 cElementTree insert_from_document (T3,T2 ) 1.1612 1.1757 1.2460 msec/pass, best: 1.1612 etree insert_from_document (T3,T4 ) 0.1667 0.4397 0.1828 msec/pass, best: 0.1667 ElementTree insert_from_document (T3,T4 ) 0.2935 0.2366 0.2363 msec/pass, best: 0.2363 cElementTree insert_from_document (T3,T4 ) 0.0566 0.0568 0.0734 msec/pass, best: 0.0566 etree insert_from_document (T4,T1 ) 23.9678 24.8289 24.7205 msec/pass, best: 23.9678 ElementTree insert_from_document (T4,T1 ) 0.2536 0.2725 0.2724 msec/pass, best: 0.2536 cElementTree insert_from_document (T4,T1 ) 0.0970 0.0986 0.0969 msec/pass, best: 0.0969 etree insert_from_document (T4,T2 ) 17.4943 17.6244 18.9083 msec/pass, best: 17.4943 ElementTree insert_from_document (T4,T2 ) 6.4159 6.5594 6.6816 msec/pass, best: 6.4159 cElementTree insert_from_document (T4,T2 ) 1.1943 1.1961 1.2079 msec/pass, best: 1.1943 etree insert_from_document (T4,T3 ) 0.5701 0.5741 0.5685 msec/pass, best: 0.5685 ElementTree insert_from_document (T4,T3 ) 0.1002 0.0967 0.0964 msec/pass, best: 0.0964 cElementTree insert_from_document (T4,T3 ) 0.0336 0.0379 0.0327 msec/pass, best: 0.0327 etree remove_children (T1 ) 6.9888 7.1405 7.1501 msec/pass, best: 6.9888 ElementTree remove_children (T1 ) 10.2381 10.3145 10.3398 msec/pass, best: 10.2381 cElementTree remove_children (T1 ) 1.1740 1.2146 1.2070 msec/pass, best: 1.1740 etree remove_children (T2 ) 8.0086 8.0501 8.0835 msec/pass, best: 8.0086 ElementTree remove_children (T2 ) 171.0074 165.6075 174.0978 msec/pass, best: 165.6075 cElementTree remove_children (T2 ) 4.5207 4.6791 4.7362 msec/pass, best: 4.5207 etree remove_children (T3 ) 0.5668 0.5530 0.5762 msec/pass, best: 0.5530 ElementTree remove_children (T3 ) 3.1857 3.1828 3.2323 msec/pass, best: 3.1828 cElementTree remove_children (T3 ) 0.2588 0.2608 0.2584 msec/pass, best: 0.2584 etree remove_children (T4 ) 0.0684 0.0753 0.0700 msec/pass, best: 0.0684 ElementTree remove_children (T4 ) 0.4579 0.4570 0.4711 msec/pass, best: 0.4570 cElementTree remove_children (T4 ) 0.0209 0.0210 0.0207 msec/pass, best: 0.0207 etree remove_children_reversed (T1 ) 11.9009 11.9145 11.8435 msec/pass, best: 11.8435 ElementTree remove_children_reversed (T1 ) 19.3379 18.8514 20.4126 msec/pass, best: 18.8514 cElementTree remove_children_reversed (T1 ) 2.2264 2.3288 2.2562 msec/pass, best: 2.2264 etree remove_children_reversed (T2 ) 12.9722 14.8116 12.7335 msec/pass, best: 12.7335 ElementTree remove_children_reversed (T2 ) 673.7946 684.9349 669.5603 msec/pass, best: 669.5603 cElementTree remove_children_reversed (T2 ) 13.0890 12.8449 12.9061 msec/pass, best: 12.8449 etree remove_children_reversed (T3 ) 0.5227 0.5268 0.5229 msec/pass, best: 0.5227 ElementTree remove_children_reversed (T3 ) 4.4230 5.2407 4.4353 msec/pass, best: 4.4230 cElementTree remove_children_reversed (T3 ) 0.4222 0.4244 0.4180 msec/pass, best: 0.4180 etree remove_children_reversed (T4 ) 0.0738 0.0731 0.0736 msec/pass, best: 0.0731 ElementTree remove_children_reversed (T4 ) 1.6637 1.6356 1.6363 msec/pass, best: 1.6356 cElementTree remove_children_reversed (T4 ) 0.0510 0.0484 0.0499 msec/pass, best: 0.0484 etree reorder (T1 ) 14.5806 16.2235 15.8373 msec/pass, best: 14.5806 ElementTree reorder (T1 ) 0.8176 2.1794 2.6297 msec/pass, best: 0.8176 cElementTree reorder (T1 ) 0.0634 0.0676 0.0605 msec/pass, best: 0.0605 etree reorder (T2 ) 18.1266 18.8180 18.8672 msec/pass, best: 18.1266 ElementTree reorder (T2 ) 5.5504 5.5097 5.7170 msec/pass, best: 5.5097 cElementTree reorder (T2 ) 1.1481 1.1568 1.1591 msec/pass, best: 1.1481 etree reorder (T3 ) 0.0130 0.0156 0.0155 msec/pass, best: 0.0130 ElementTree reorder (T3 ) 0.0437 0.0459 0.0446 msec/pass, best: 0.0437 cElementTree reorder (T3 ) 0.0244 0.0228 0.0230 msec/pass, best: 0.0228 etree reorder (T4 ) 0.0731 0.0780 0.0734 msec/pass, best: 0.0731 ElementTree reorder (T4 ) 0.1282 0.1242 0.1238 msec/pass, best: 0.1238 cElementTree reorder (T4 ) 0.0217 0.0218 0.0220 msec/pass, best: 0.0217 etree reorder_slice (T1 ) 14.5325 17.0733 15.9148 msec/pass, best: 14.5325 ElementTree reorder_slice (T1 ) 0.5114 1.8668 2.6623 msec/pass, best: 0.5114 cElementTree reorder_slice (T1 ) 0.0629 0.0636 0.0633 msec/pass, best: 0.0629 etree reorder_slice (T2 ) 19.0733 22.6151 20.3017 msec/pass, best: 19.0733 ElementTree reorder_slice (T2 ) 5.5578 5.8006 5.7953 msec/pass, best: 5.5578 cElementTree reorder_slice (T2 ) 1.1598 1.1522 1.1647 msec/pass, best: 1.1522 etree reorder_slice (T3 ) 0.0145 0.0135 0.0133 msec/pass, best: 0.0133 ElementTree reorder_slice (T3 ) 0.0421 0.0435 0.0434 msec/pass, best: 0.0421 cElementTree reorder_slice (T3 ) 0.0225 0.0221 0.0229 msec/pass, best: 0.0221 etree reorder_slice (T4 ) 0.0796 0.0779 0.0786 msec/pass, best: 0.0779 ElementTree reorder_slice (T4 ) 0.1390 0.1334 0.1426 msec/pass, best: 0.1334 cElementTree reorder_slice (T4 ) 0.0259 0.0219 0.0217 msec/pass, best: 0.0217 etree replace_children (T1 ) 7.4184 7.9814 8.2130 msec/pass, best: 7.4184 ElementTree replace_children (T1 ) 19.4359 19.5994 19.5809 msec/pass, best: 19.4359 cElementTree replace_children (T1 ) 2.0112 2.0221 2.0522 msec/pass, best: 2.0112 etree replace_children (T2 ) 17.0823 19.4184 20.3127 msec/pass, best: 17.0823 ElementTree replace_children (T2 ) 26.4215 26.6201 26.9273 msec/pass, best: 26.4215 cElementTree replace_children (T2 ) 2.9001 2.8836 2.8504 msec/pass, best: 2.8504 etree replace_children (T3 ) 0.6777 0.6651 0.6562 msec/pass, best: 0.6562 ElementTree replace_children (T3 ) 5.2446 4.5064 4.6229 msec/pass, best: 4.5064 cElementTree replace_children (T3 ) 0.4712 0.4945 0.4554 msec/pass, best: 0.4554 etree replace_children (T4 ) 0.4540 0.5324 0.4619 msec/pass, best: 0.4540 ElementTree replace_children (T4 ) 0.3328 0.3317 0.3333 msec/pass, best: 0.3317 cElementTree replace_children (T4 ) 0.0388 0.0385 0.0382 msec/pass, best: 0.0382 etree rotate_children (T1 ) 27.4596 27.0203 27.8874 msec/pass, best: 27.0203 ElementTree rotate_children (T1 ) 1.2427 1.2087 1.1850 msec/pass, best: 1.1850 cElementTree rotate_children (T1 ) 0.1627 0.1654 0.1633 msec/pass, best: 0.1627 etree rotate_children (T2 ) 7.2919 7.9870 7.1657 msec/pass, best: 7.1657 ElementTree rotate_children (T2 ) 2.2686 2.5049 1.8473 msec/pass, best: 1.8473 cElementTree rotate_children (T2 ) 0.4213 0.4067 0.4378 msec/pass, best: 0.4067 etree rotate_children (T3 ) 3.9796 3.9531 4.7094 msec/pass, best: 3.9531 ElementTree rotate_children (T3 ) 0.6443 0.5682 0.5796 msec/pass, best: 0.5682 cElementTree rotate_children (T3 ) 0.1355 0.1322 0.1368 msec/pass, best: 0.1322 etree rotate_children (T4 ) 0.3995 0.3204 0.3173 msec/pass, best: 0.3173 ElementTree rotate_children (T4 ) 0.5233 0.5198 0.5278 msec/pass, best: 0.5198 cElementTree rotate_children (T4 ) 0.1210 0.1199 0.1275 msec/pass, best: 0.1199 etree set_attributes (T1 ) 6.0470 6.6676 6.6880 msec/pass, best: 6.0470 ElementTree set_attributes (T1 ) 0.1447 0.1446 0.1479 msec/pass, best: 0.1446 cElementTree set_attributes (T1 ) 0.0691 0.0665 0.0666 msec/pass, best: 0.0665 etree set_attributes (T2 ) 8.8447 9.5652 9.4956 msec/pass, best: 8.8447 ElementTree set_attributes (T2 ) 1.6476 1.6582 1.6447 msec/pass, best: 1.6447 cElementTree set_attributes (T2 ) 0.7479 0.7352 0.7474 msec/pass, best: 0.7352 etree set_attributes (T3 ) 0.0568 0.0928 0.0583 msec/pass, best: 0.0568 ElementTree set_attributes (T3 ) 0.0625 0.0613 0.0658 msec/pass, best: 0.0613 cElementTree set_attributes (T3 ) 0.0272 0.0240 0.0255 msec/pass, best: 0.0240 etree set_attributes (T4 ) 0.1534 0.1562 0.1530 msec/pass, best: 0.1530 ElementTree set_attributes (T4 ) 0.0779 0.0759 0.0762 msec/pass, best: 0.0759 cElementTree set_attributes (T4 ) 0.0268 0.0282 0.0261 msec/pass, best: 0.0261 etree setget_attributes (T1 ) 5.4190 6.6268 6.6813 msec/pass, best: 5.4190 ElementTree setget_attributes (T1 ) 0.2305 0.2438 0.2276 msec/pass, best: 0.2276 cElementTree setget_attributes (T1 ) 0.1521 0.0983 0.0920 msec/pass, best: 0.0920 etree setget_attributes (T2 ) 10.5145 11.2669 11.2211 msec/pass, best: 10.5145 ElementTree setget_attributes (T2 ) 3.2395 3.1300 3.1196 msec/pass, best: 3.1196 cElementTree setget_attributes (T2 ) 1.1320 1.1729 1.1571 msec/pass, best: 1.1320 etree setget_attributes (T3 ) 0.0784 0.0807 0.0913 msec/pass, best: 0.0784 ElementTree setget_attributes (T3 ) 0.0977 0.0835 0.0889 msec/pass, best: 0.0835 cElementTree setget_attributes (T3 ) 0.0295 0.0285 0.0333 msec/pass, best: 0.0285 etree setget_attributes (T4 ) 0.2418 0.2438 0.2392 msec/pass, best: 0.2392 ElementTree setget_attributes (T4 ) 0.1654 0.1779 0.1539 msec/pass, best: 0.1539 cElementTree setget_attributes (T4 ) 0.0476 0.0458 0.0506 msec/pass, best: 0.0458
участники (2)
-
Fredrik Lundh
-
Stefan Behnel