nickva commented on issue #726: Provide a more accurate size check for max_document_size limit URL: https://github.com/apache/couchdb/pull/726#issuecomment-320289334 Created a silly benchmark to test a few approaches: https://github.com/nickva/couch_ebench The test uses a few encoders and the two custom Erlang modules. Inputs to the test can be scaled by size and those sizes are provided on the command line. So size 1000 for example for str_basic will create 1000 character string, for nested array will create a nested array of depth 1000, etc. The time reported is the time to run a single length check in microseconds. A smaller input size will be run a bunch of tries in a row then time will be averaged. So inputs of size 10 will be run for 1000 times in a row, size 1000, 10 times, size 10k+ 1 time. Example run for inputs of 10, 1000 and 10k sizes: ``` ./build.sh && ./run.sh 10 1000 10000 ... Generating inputs... Running benchmark 4 encoders x 42 tests. Input size(s): [10,1000,10000] Finished running benchmark. Enc. | Input size | Input type | USec | Bytes ------+------------+--------------+------------+---------- jiffy | 10 | file_1 | 170.7 | 13031 | 10 | float_17d | 3.2 | 201 | 10 | float_1d_arr | 2.8 | 41 | 10 | float_large_ | 2.9 | 71 | 10 | int_large_ar | 15.7 | 1031 | 10 | int_small_ar | 2.4 | 31 | 10 | nested_arr | 1.7 | 22 | 10 | nested_obj | 2.1 | 69 | 10 | str_basic | 0.6 | 12 | 10 | str_cent | 0.5 | 22 | 10 | str_ctr1 | 0.6 | 62 | 10 | str_escn | 0.5 | 22 | 10 | str_euro | 0.8 | 32 | 10 | str_hwair | 0.8 | 42 | 1000 | file_1 | 18171.8 | 1303001 | 1000 | float_17d | 280.3 | 20001 | 1000 | float_1d_arr | 262.5 | 4001 | 1000 | float_large_ | 233.9 | 7001 | 1000 | int_large_ar | 1864.8 | 103001 | 1000 | int_small_ar | 196.1 | 3001 | 1000 | nested_arr | 133.1 | 2002 | 1000 | nested_obj | 175.8 | 6009 | 1000 | str_basic | 2.9 | 1002 | 1000 | str_cent | 10.9 | 2002 | 1000 | str_ctr1 | 8.7 | 6002 | 1000 | str_escn | 6.0 | 2002 | 1000 | str_euro | 16.0 | 3002 | 1000 | str_hwair | 28.8 | 4002 | 10000 | file_1 | 185333.1 | 13030001 | 10000 | float_17d | 3046.8 | 200001 | 10000 | float_1d_arr | 2168.3 | 40001 | 10000 | float_large_ | 2182.0 | 70001 | 10000 | int_large_ar | 27650.3 | 1030001 | 10000 | int_small_ar | 2384.8 | 30001 | 10000 | nested_arr | 1259.9 | 20002 | 10000 | nested_obj | 1832.3 | 60009 | 10000 | str_basic | 29.1 | 10002 | 10000 | str_cent | 97.6 | 20002 | 10000 | str_ctr1 | 62.6 | 60002 | 10000 | str_escn | 43.7 | 20002 | 10000 | str_euro | 140.1 | 30002 | 10000 | str_hwair | 172.2 | 40002 erlfast | 10 | file_1 | 43.7 | 13011 | 10 | float_17d | 2.2 | 41 | 10 | float_1d_arr | 1.8 | 41 | 10 | float_large_ | 14.5 | 221 | 10 | int_large_ar | 1.4 | 1031 | 10 | int_small_ar | 0.4 | 31 | 10 | nested_arr | 0.4 | 22 | 10 | nested_obj | 0.8 | 69 | 10 | str_basic | 0.0 | 12 | 10 | str_cent | 0.0 | 22 | 10 | str_ctr1 | 0.0 | 12 | 10 | str_escn | 0.0 | 12 | 10 | str_euro | 0.0 | 32 | 10 | str_hwair | 0.0 | 42 | 1000 | file_1 | 4403.1 | 1301001 | 1000 | float_17d | 96.4 | 4001 | 1000 | float_1d_arr | 104.8 | 4001 | 1000 | float_large_ | 1355.6 | 22001 | 1000 | int_large_ar | 172.1 | 103001 | 1000 | int_small_ar | 29.9 | 3001 | 1000 | nested_arr | 34.8 | 2002 | 1000 | nested_obj | 64.6 | 6009 | 1000 | str_basic | 0.0 | 1002 | 1000 | str_cent | 0.0 | 2002 | 1000 | str_ctr1 | 0.0 | 1002 | 1000 | str_escn | 0.0 | 1002 | 1000 | str_euro | 0.0 | 3002 | 1000 | str_hwair | 0.0 | 4002 | 10000 | file_1 | 43863.5 | 13010001 | 10000 | float_17d | 956.9 | 40001 | 10000 | float_1d_arr | 949.8 | 40001 | 10000 | float_large_ | 13652.1 | 220001 | 10000 | int_large_ar | 1421.1 | 1030001 | 10000 | int_small_ar | 360.9 | 30001 | 10000 | nested_arr | 358.8 | 20002 | 10000 | nested_obj | 606.8 | 60009 | 10000 | str_basic | 0.0 | 10002 | 10000 | str_cent | 0.0 | 20002 | 10000 | str_ctr1 | 0.0 | 10002 | 10000 | str_escn | 0.1 | 10002 | 10000 | str_euro | 0.1 | 30002 | 10000 | str_hwair | 0.0 | 40002 erlexact | 10 | file_1 | 346.7 | 13031 | 10 | float_17d | 8.0 | 201 | 10 | float_1d_arr | 7.6 | 41 | 10 | float_large_ | 8.2 | 71 | 10 | int_large_ar | 0.9 | 1031 | 10 | int_small_ar | 1.4 | 31 | 10 | nested_arr | 0.5 | 22 | 10 | nested_obj | 1.4 | 69 | 10 | str_basic | 0.3 | 12 | 10 | str_cent | 0.5 | 22 | 10 | str_ctr1 | 0.3 | 62 | 10 | str_escn | 0.3 | 22 | 10 | str_euro | 0.4 | 32 | 10 | str_hwair | 0.3 | 42 | 1000 | file_1 | 35026.9 | 1303001 | 1000 | float_17d | 919.0 | 20001 | 1000 | float_1d_arr | 821.8 | 4001 | 1000 | float_large_ | 809.0 | 7001 | 1000 | int_large_ar | 99.8 | 103001 | 1000 | int_small_ar | 54.6 | 3001 | 1000 | nested_arr | 38.2 | 2002 | 1000 | nested_obj | 127.4 | 6009 | 1000 | str_basic | 26.0 | 1002 | 1000 | str_cent | 43.8 | 2002 | 1000 | str_ctr1 | 21.1 | 6002 | 1000 | str_escn | 24.1 | 2002 | 1000 | str_euro | 36.1 | 3002 | 1000 | str_hwair | 28.6 | 4002 | 10000 | file_1 | 363273.3 | 13030001 | 10000 | float_17d | 8589.2 | 200001 | 10000 | float_1d_arr | 8709.6 | 40001 | 10000 | float_large_ | 8299.4 | 70001 | 10000 | int_large_ar | 949.6 | 1030001 | 10000 | int_small_ar | 513.5 | 30001 | 10000 | nested_arr | 414.5 | 20002 | 10000 | nested_obj | 1216.9 | 60009 | 10000 | str_basic | 355.7 | 10002 | 10000 | str_cent | 615.7 | 20002 | 10000 | str_ctr1 | 261.1 | 60002 | 10000 | str_escn | 253.7 | 20002 | 10000 | str_euro | 322.0 | 30002 | 10000 | str_hwair | 332.6 | 40002 jsone | 10 | file_1 | 699.0 | 13411 | 10 | float_17d | 11.2 | 271 | 10 | float_1d_arr | 9.7 | 271 | 10 | float_large_ | 17.8 | 281 | 10 | int_large_ar | 11.0 | 1031 | 10 | int_small_ar | 3.1 | 31 | 10 | nested_arr | 1.8 | 22 | 10 | nested_obj | 4.5 | 69 | 10 | str_basic | 0.8 | 12 | 10 | str_cent | 1.5 | 62 | 10 | str_ctr1 | 1.0 | 62 | 10 | str_escn | 0.5 | 22 | 10 | str_euro | 1.5 | 62 | 10 | str_hwair | 2.7 | 122 | 1000 | file_1 | 93229.8 | 1341001 | 1000 | float_17d | 940.6 | 27001 | 1000 | float_1d_arr | 974.1 | 27001 | 1000 | float_large_ | 1857.5 | 28001 | 1000 | int_large_ar | 987.7 | 103001 | 1000 | int_small_ar | 137.0 | 3001 | 1000 | nested_arr | 112.4 | 2002 | 1000 | nested_obj | 295.7 | 6009 | 1000 | str_basic | 50.7 | 1002 | 1000 | str_cent | 111.1 | 6002 | 1000 | str_ctr1 | 70.3 | 6002 | 1000 | str_escn | 32.9 | 2002 | 1000 | str_euro | 113.2 | 6002 | 1000 | str_hwair | 302.7 | 12002 | 10000 | file_1 | 972721.8 | 13410001 | 10000 | float_17d | 10365.8 | 270001 | 10000 | float_1d_arr | 9820.9 | 270001 | 10000 | float_large_ | 18326.3 | 280001 | 10000 | int_large_ar | 12271.9 | 1030001 | 10000 | int_small_ar | 1423.4 | 30001 | 10000 | nested_arr | 1395.8 | 20002 | 10000 | nested_obj | 3795.6 | 60009 | 10000 | str_basic | 636.1 | 10002 | 10000 | str_cent | 1077.9 | 60002 | 10000 | str_ctr1 | 666.1 | 60002 | 10000 | str_escn | 304.4 | 20002 | 10000 | str_euro | 1130.7 | 60002 | 10000 | str_hwair | 2607.8 | 120002 ``` ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected]
With regards, Apache Git Services
