Skip to content

Commit

Permalink
Inline BufferUnpacker::ensureLength() (#13)
Browse files Browse the repository at this point in the history
* Inline BufferUnpacker::ensureLength()
* Test against PHP 7.1
* Run code coverage on php7
* Add more tests
  • Loading branch information
rybakit committed Sep 24, 2016
1 parent 1907188 commit a0b4806
Show file tree
Hide file tree
Showing 4 changed files with 202 additions and 151 deletions.
4 changes: 2 additions & 2 deletions .travis.yml
Expand Up @@ -8,8 +8,8 @@ services:
env:
- PHP_RUNTIME='php:5.4-cli'
- PHP_RUNTIME='php:5.5-cli'
- PHP_RUNTIME='php:5.6-cli' PHPUNIT_OPTS='--coverage-clover=coverage.clover'
- PHP_RUNTIME='php:7.0-cli'
- PHP_RUNTIME='php:5.6-cli'
- PHP_RUNTIME='php:7.0-cli' PHPUNIT_OPTS='--coverage-clover=coverage.clover'
- PHP_RUNTIME='php:7.1-cli'
- PHP_RUNTIME='baptistedonaux/hhvm:3.9'
- PHP_RUNTIME='baptistedonaux/hhvm:3.12'
Expand Down
250 changes: 125 additions & 125 deletions README.md
Expand Up @@ -333,82 +333,82 @@ Iterations: 100000
=============================================
Test/Target Packer BufferUnpacker
---------------------------------------------
nil .................. 0.0076 ........ 0.0230
false ................ 0.0087 ........ 0.0254
true ................. 0.0081 ........ 0.0258
7-bit uint #1 ........ 0.0105 ........ 0.0189
7-bit uint #2 ........ 0.0095 ........ 0.0193
7-bit uint #3 ........ 0.0094 ........ 0.0202
5-bit sint #1 ........ 0.0105 ........ 0.0254
5-bit sint #2 ........ 0.0112 ........ 0.0242
5-bit sint #3 ........ 0.0119 ........ 0.0231
8-bit uint #1 ........ 0.0122 ........ 0.0451
8-bit uint #2 ........ 0.0128 ........ 0.0438
8-bit uint #3 ........ 0.0119 ........ 0.0464
16-bit uint #1 ....... 0.0177 ........ 0.0540
16-bit uint #2 ....... 0.0180 ........ 0.0566
16-bit uint #3 ....... 0.0176 ........ 0.0554
32-bit uint #1 ....... 0.0226 ........ 0.0708
32-bit uint #2 ....... 0.0206 ........ 0.0684
32-bit uint #3 ....... 0.0218 ........ 0.0686
64-bit uint #1 ....... 0.0332 ........ 0.0818
64-bit uint #2 ....... 0.0350 ........ 0.0826
8-bit int #1 ......... 0.0140 ........ 0.0516
8-bit int #2 ......... 0.0138 ........ 0.0483
8-bit int #3 ......... 0.0131 ........ 0.0504
16-bit int #1 ........ 0.0206 ........ 0.0577
16-bit int #2 ........ 0.0199 ........ 0.0571
16-bit int #3 ........ 0.0199 ........ 0.0576
32-bit int #1 ........ 0.0225 ........ 0.0781
32-bit int #2 ........ 0.0240 ........ 0.0769
32-bit int #3 ........ 0.0239 ........ 0.0773
64-bit int #1 ........ 0.0327 ........ 0.0847
64-bit int #2 ........ 0.0324 ........ 0.0829
64-bit int #3 ........ 0.0371 ........ 0.0842
64-bit float #1 ...... 0.0287 ........ 0.0711
64-bit float #2 ...... 0.0279 ........ 0.0703
64-bit float #3 ...... 0.0279 ........ 0.0703
fix string #1 ........ 0.0255 ........ 0.0248
fix string #2 ........ 0.0256 ........ 0.0427
fix string #3 ........ 0.0262 ........ 0.0428
fix string #4 ........ 0.0282 ........ 0.0411
8-bit string #1 ...... 0.0342 ........ 0.0682
8-bit string #2 ...... 0.0351 ........ 0.0699
8-bit string #3 ...... 0.0413 ........ 0.0742
16-bit string #1 ..... 0.0507 ........ 0.0767
16-bit string #2 ..... 3.1860 ........ 0.3319
32-bit string ........ 3.1942 ........ 0.3502
wide char string #1 .. 0.0333 ........ 0.0416
wide char string #2 .. 0.0887 ........ 0.0704
8-bit binary #1 ...... 0.0289 ........ 0.0608
8-bit binary #2 ...... 0.0321 ........ 0.0602
8-bit binary #3 ...... 0.0308 ........ 0.0607
16-bit binary ........ 0.0379 ........ 0.0732
32-bit binary ........ 0.3814 ........ 0.3507
fixext 1 ............. 0.0256 ........ 0.0909
fixext 2 ............. 0.0258 ........ 0.0883
fixext 4 ............. 0.0264 ........ 0.0910
fixext 8 ............. 0.0279 ........ 0.0898
fixext 16 ............ 0.0290 ........ 0.0900
8-bit ext ............ 0.0338 ........ 0.1077
16-bit ext ........... 0.0431 ........ 0.1179
32-bit ext ........... 0.3784 ........ 0.3879
fix array #1 ......... 0.0243 ........ 0.0277
fix array #2 ......... 0.0857 ........ 0.1124
16-bit array #1 ...... 0.2455 ........ 0.3539
nil .................. 0.0076 ........ 0.0202
false ................ 0.0088 ........ 0.0205
true ................. 0.0086 ........ 0.0213
7-bit uint #1 ........ 0.0092 ........ 0.0160
7-bit uint #2 ........ 0.0098 ........ 0.0163
7-bit uint #3 ........ 0.0094 ........ 0.0157
5-bit sint #1 ........ 0.0090 ........ 0.0201
5-bit sint #2 ........ 0.0112 ........ 0.0197
5-bit sint #3 ........ 0.0100 ........ 0.0199
8-bit uint #1 ........ 0.0130 ........ 0.0366
8-bit uint #2 ........ 0.0122 ........ 0.0354
8-bit uint #3 ........ 0.0122 ........ 0.0356
16-bit uint #1 ....... 0.0176 ........ 0.0459
16-bit uint #2 ....... 0.0177 ........ 0.0482
16-bit uint #3 ....... 0.0184 ........ 0.0488
32-bit uint #1 ....... 0.0222 ........ 0.0577
32-bit uint #2 ....... 0.0218 ........ 0.0617
32-bit uint #3 ....... 0.0228 ........ 0.0579
64-bit uint #1 ....... 0.0337 ........ 0.0738
64-bit uint #2 ....... 0.0323 ........ 0.0733
8-bit int #1 ......... 0.0124 ........ 0.0395
8-bit int #2 ......... 0.0125 ........ 0.0398
8-bit int #3 ......... 0.0118 ........ 0.0392
16-bit int #1 ........ 0.0171 ........ 0.0531
16-bit int #2 ........ 0.0172 ........ 0.0518
16-bit int #3 ........ 0.0172 ........ 0.0524
32-bit int #1 ........ 0.0203 ........ 0.0658
32-bit int #2 ........ 0.0203 ........ 0.0683
32-bit int #3 ........ 0.0205 ........ 0.0691
64-bit int #1 ........ 0.0323 ........ 0.0726
64-bit int #2 ........ 0.0319 ........ 0.0748
64-bit int #3 ........ 0.0318 ........ 0.0732
64-bit float #1 ...... 0.0278 ........ 0.0629
64-bit float #2 ...... 0.0277 ........ 0.0616
64-bit float #3 ...... 0.0274 ........ 0.0639
fix string #1 ........ 0.0237 ........ 0.0205
fix string #2 ........ 0.0256 ........ 0.0323
fix string #3 ........ 0.0266 ........ 0.0320
fix string #4 ........ 0.0280 ........ 0.0350
8-bit string #1 ...... 0.0324 ........ 0.0625
8-bit string #2 ...... 0.0360 ........ 0.0567
8-bit string #3 ...... 0.0425 ........ 0.0554
16-bit string #1 ..... 0.0477 ........ 0.0665
16-bit string #2 ..... 3.1608 ........ 0.3122
32-bit string ........ 3.1587 ........ 0.3361
wide char string #1 .. 0.0306 ........ 0.0322
wide char string #2 .. 0.0914 ........ 0.0573
8-bit binary #1 ...... 0.0289 ........ 0.0479
8-bit binary #2 ...... 0.0300 ........ 0.0470
8-bit binary #3 ...... 0.0301 ........ 0.0485
16-bit binary ........ 0.0363 ........ 0.0601
32-bit binary ........ 0.3688 ........ 0.3303
fixext 1 ............. 0.0248 ........ 0.0741
fixext 2 ............. 0.0256 ........ 0.0758
fixext 4 ............. 0.0271 ........ 0.0767
fixext 8 ............. 0.0283 ........ 0.0743
fixext 16 ............ 0.0287 ........ 0.0769
8-bit ext ............ 0.0348 ........ 0.0867
16-bit ext ........... 0.0403 ........ 0.0951
32-bit ext ........... 0.3747 ........ 0.3664
fix array #1 ......... 0.0245 ........ 0.0231
fix array #2 ......... 0.0817 ........ 0.0877
16-bit array #1 ...... 0.2396 ........ 0.2779
16-bit array #2 ........... S ............. S
32-bit array .............. S ............. S
complex array ........ 0.3501 ........ 0.5267
fix map #1 ........... 0.1639 ........ 0.2414
fix map #2 ........... 0.0687 ........ 0.0897
fix map #3 ........... 0.0820 ........ 0.1379
fix map #4 ........... 0.0806 ........ 0.1066
16-bit map #1 ........ 0.4314 ........ 0.6155
complex array ........ 0.3516 ........ 0.4230
fix map #1 ........... 0.1633 ........ 0.1716
fix map #2 ........... 0.0699 ........ 0.0648
fix map #3 ........... 0.0822 ........ 0.1111
fix map #4 ........... 0.0762 ........ 0.0818
16-bit map #1 ........ 0.4215 ........ 0.4571
16-bit map #2 ............. S ............. S
32-bit map ................ S ............. S
complex map .......... 0.5023 ........ 0.6408
complex map .......... 0.4953 ........ 0.5237
=============================================
Total 10.5740 7.6534
Total 10.4241 6.4129
Skipped 4 4
Failed 0 0
Ignored 0 0
Expand Down Expand Up @@ -446,53 +446,53 @@ Iterations: 100000
================================================================================
Test/Target Packer (str) BufferUnpacker msgpack_pack msgpack_unpack
--------------------------------------------------------------------------------
nil ....................... 0.0080 ........ 0.0243 ...... 0.0078 ........ 0.0061
false ..................... 0.0093 ........ 0.0249 ...... 0.0075 ........ 0.0061
true ...................... 0.0078 ........ 0.0249 ...... 0.0083 ........ 0.0062
7-bit uint #1 ............. 0.0097 ........ 0.0193 ...... 0.0081 ........ 0.0061
7-bit uint #2 ............. 0.0097 ........ 0.0195 ...... 0.0081 ........ 0.0067
7-bit uint #3 ............. 0.0099 ........ 0.0194 ...... 0.0081 ........ 0.0061
5-bit sint #1 ............. 0.0109 ........ 0.0249 ...... 0.0074 ........ 0.0060
5-bit sint #2 ............. 0.0108 ........ 0.0232 ...... 0.0082 ........ 0.0060
5-bit sint #3 ............. 0.0110 ........ 0.0248 ...... 0.0082 ........ 0.0059
8-bit uint #1 ............. 0.0125 ........ 0.0473 ...... 0.0087 ........ 0.0072
8-bit uint #2 ............. 0.0125 ........ 0.0484 ...... 0.0082 ........ 0.0064
8-bit uint #3 ............. 0.0123 ........ 0.0454 ...... 0.0082 ........ 0.0063
16-bit uint #1 ............ 0.0176 ........ 0.0543 ...... 0.0092 ........ 0.0065
16-bit uint #2 ............ 0.0170 ........ 0.0548 ...... 0.0083 ........ 0.0066
16-bit uint #3 ............ 0.0175 ........ 0.0559 ...... 0.0083 ........ 0.0077
32-bit uint #1 ............ 0.0215 ........ 0.0694 ...... 0.0082 ........ 0.0067
32-bit uint #2 ............ 0.0216 ........ 0.0705 ...... 0.0082 ........ 0.0061
32-bit uint #3 ............ 0.0213 ........ 0.0698 ...... 0.0094 ........ 0.0075
64-bit uint #1 ............ 0.0323 ........ 0.0812 ...... 0.0095 ........ 0.0066
64-bit uint #2 ............ 0.0321 ........ 0.0861 ...... 0.0089 ........ 0.0064
8-bit int #1 .............. 0.0126 ........ 0.0494 ...... 0.0084 ........ 0.0065
8-bit int #2 .............. 0.0142 ........ 0.0499 ...... 0.0082 ........ 0.0066
8-bit int #3 .............. 0.0136 ........ 0.0489 ...... 0.0083 ........ 0.0065
16-bit int #1 ............. 0.0175 ........ 0.0593 ...... 0.0081 ........ 0.0065
16-bit int #2 ............. 0.0177 ........ 0.0603 ...... 0.0074 ........ 0.0074
16-bit int #3 ............. 0.0178 ........ 0.0602 ...... 0.0081 ........ 0.0069
32-bit int #1 ............. 0.0221 ........ 0.0789 ...... 0.0079 ........ 0.0073
32-bit int #2 ............. 0.0233 ........ 0.0785 ...... 0.0097 ........ 0.0072
32-bit int #3 ............. 0.0214 ........ 0.0767 ...... 0.0082 ........ 0.0063
64-bit int #1 ............. 0.0318 ........ 0.0887 ...... 0.0083 ........ 0.0077
64-bit int #2 ............. 0.0321 ........ 0.0871 ...... 0.0083 ........ 0.0064
64-bit int #3 ............. 0.0332 ........ 0.0836 ...... 0.0083 ........ 0.0063
64-bit float #1 ........... 0.0288 ........ 0.0759 ...... 0.0084 ........ 0.0062
64-bit float #2 ........... 0.0278 ........ 0.0726 ...... 0.0078 ........ 0.0072
64-bit float #3 ........... 0.0287 ........ 0.0755 ...... 0.0078 ........ 0.0063
fix string #1 ............. 0.0164 ........ 0.0244 ...... 0.0085 ........ 0.0063
fix string #2 ............. 0.0184 ........ 0.0411 ...... 0.0085 ........ 0.0082
fix string #3 ............. 0.0182 ........ 0.0419 ...... 0.0100 ........ 0.0088
fix string #4 ............. 0.0181 ........ 0.0406 ...... 0.0084 ........ 0.0079
8-bit string #1 ........... 0.0209 ........ 0.0677 ...... 0.0108 ........ 0.0076
8-bit string #2 ........... 0.0207 ........ 0.0672 ...... 0.0086 ........ 0.0079
8-bit string #3 ........... 0.0221 ........ 0.0677 ...... 0.0132 ........ 0.0082
16-bit string #1 .......... 0.0263 ........ 0.0774 ...... 0.0132 ........ 0.0089
16-bit string #2 .......... 0.3639 ........ 0.3378 ...... 0.3470 ........ 0.2731
32-bit string ............. 0.3733 ........ 0.3516 ...... 0.3426 ........ 0.2705
wide char string #1 ....... 0.0180 ........ 0.0400 ...... 0.0085 ........ 0.0078
wide char string #2 ....... 0.0203 ........ 0.0675 ...... 0.0086 ........ 0.0081
nil ....................... 0.0083 ........ 0.0215 ...... 0.0089 ........ 0.0062
false ..................... 0.0102 ........ 0.0207 ...... 0.0077 ........ 0.0062
true ...................... 0.0086 ........ 0.0214 ...... 0.0076 ........ 0.0064
7-bit uint #1 ............. 0.0119 ........ 0.0164 ...... 0.0090 ........ 0.0065
7-bit uint #2 ............. 0.0094 ........ 0.0163 ...... 0.0083 ........ 0.0053
7-bit uint #3 ............. 0.0096 ........ 0.0159 ...... 0.0082 ........ 0.0061
5-bit sint #1 ............. 0.0103 ........ 0.0196 ...... 0.0081 ........ 0.0061
5-bit sint #2 ............. 0.0103 ........ 0.0199 ...... 0.0082 ........ 0.0069
5-bit sint #3 ............. 0.0104 ........ 0.0198 ...... 0.0080 ........ 0.0075
8-bit uint #1 ............. 0.0124 ........ 0.0342 ...... 0.0078 ........ 0.0067
8-bit uint #2 ............. 0.0125 ........ 0.0357 ...... 0.0082 ........ 0.0078
8-bit uint #3 ............. 0.0127 ........ 0.0354 ...... 0.0081 ........ 0.0077
16-bit uint #1 ............ 0.0196 ........ 0.0469 ...... 0.0096 ........ 0.0070
16-bit uint #2 ............ 0.0171 ........ 0.0458 ...... 0.0083 ........ 0.0067
16-bit uint #3 ............ 0.0186 ........ 0.0469 ...... 0.0082 ........ 0.0065
32-bit uint #1 ............ 0.0215 ........ 0.0600 ...... 0.0083 ........ 0.0068
32-bit uint #2 ............ 0.0211 ........ 0.0590 ...... 0.0082 ........ 0.0065
32-bit uint #3 ............ 0.0213 ........ 0.0586 ...... 0.0088 ........ 0.0073
64-bit uint #1 ............ 0.0327 ........ 0.0747 ...... 0.0095 ........ 0.0061
64-bit uint #2 ............ 0.0312 ........ 0.0714 ...... 0.0082 ........ 0.0065
8-bit int #1 .............. 0.0123 ........ 0.0413 ...... 0.0089 ........ 0.0065
8-bit int #2 .............. 0.0124 ........ 0.0401 ...... 0.0091 ........ 0.0066
8-bit int #3 .............. 0.0123 ........ 0.0402 ...... 0.0081 ........ 0.0066
16-bit int #1 ............. 0.0182 ........ 0.0502 ...... 0.0080 ........ 0.0068
16-bit int #2 ............. 0.0169 ........ 0.0523 ...... 0.0082 ........ 0.0067
16-bit int #3 ............. 0.0173 ........ 0.0504 ...... 0.0081 ........ 0.0066
32-bit int #1 ............. 0.0211 ........ 0.0691 ...... 0.0092 ........ 0.0063
32-bit int #2 ............. 0.0210 ........ 0.0690 ...... 0.0087 ........ 0.0068
32-bit int #3 ............. 0.0210 ........ 0.0696 ...... 0.0082 ........ 0.0067
64-bit int #1 ............. 0.0317 ........ 0.0736 ...... 0.0083 ........ 0.0064
64-bit int #2 ............. 0.0318 ........ 0.0762 ...... 0.0082 ........ 0.0078
64-bit int #3 ............. 0.0321 ........ 0.0765 ...... 0.0091 ........ 0.0078
64-bit float #1 ........... 0.0276 ........ 0.0620 ...... 0.0077 ........ 0.0065
64-bit float #2 ........... 0.0292 ........ 0.0659 ...... 0.0083 ........ 0.0065
64-bit float #3 ........... 0.0294 ........ 0.0672 ...... 0.0069 ........ 0.0071
fix string #1 ............. 0.0157 ........ 0.0210 ...... 0.0085 ........ 0.0063
fix string #2 ............. 0.0178 ........ 0.0348 ...... 0.0100 ........ 0.0080
fix string #3 ............. 0.0183 ........ 0.0351 ...... 0.0085 ........ 0.0090
fix string #4 ............. 0.0175 ........ 0.0335 ...... 0.0084 ........ 0.0081
8-bit string #1 ........... 0.0200 ........ 0.0579 ...... 0.0083 ........ 0.0092
8-bit string #2 ........... 0.0205 ........ 0.0605 ...... 0.0089 ........ 0.0079
8-bit string #3 ........... 0.0199 ........ 0.0600 ...... 0.0132 ........ 0.0084
16-bit string #1 .......... 0.0256 ........ 0.0709 ...... 0.0132 ........ 0.0090
16-bit string #2 .......... 0.3552 ........ 0.3236 ...... 0.3384 ........ 0.2617
32-bit string ............. 0.3617 ........ 0.3382 ...... 0.3358 ........ 0.2717
wide char string #1 ....... 0.0183 ........ 0.0334 ...... 0.0084 ........ 0.0080
wide char string #2 ....... 0.0201 ........ 0.0582 ...... 0.0087 ........ 0.0095
8-bit binary #1 ................ I ............. I ........... F ............. I
8-bit binary #2 ................ I ............. I ........... F ............. I
8-bit binary #3 ................ I ............. I ........... F ............. I
Expand All @@ -506,22 +506,22 @@ fixext 16 ...................... I ............. I ........... F ............. F
8-bit ext ...................... I ............. I ........... F ............. F
16-bit ext ..................... I ............. I ........... F ............. F
32-bit ext ..................... I ............. I ........... F ............. F
fix array #1 .............. 0.0269 ........ 0.0266 ...... 0.0170 ........ 0.0080
fix array #2 .............. 0.0764 ........ 0.1063 ...... 0.0218 ........ 0.0213
16-bit array #1 ........... 0.2474 ........ 0.3291 ...... 0.0424 ........ 0.0482
fix array #1 .............. 0.0251 ........ 0.0243 ...... 0.0158 ........ 0.0080
fix array #2 .............. 0.0774 ........ 0.0893 ...... 0.0209 ........ 0.0209
16-bit array #1 ........... 0.2440 ........ 0.2675 ...... 0.0402 ........ 0.0498
16-bit array #2 ................ S ............. S ........... S ............. S
32-bit array ................... S ............. S ........... S ............. S
complex array .................. I ............. I ........... F ............. F
fix map #1 ..................... I ............. I ........... F ............. I
fix map #2 ................ 0.0664 ........ 0.0821 ...... 0.0189 ........ 0.0207
fix map #2 ................ 0.0598 ........ 0.0675 ...... 0.0182 ........ 0.0191
fix map #3 ..................... I ............. I ........... F ............. I
fix map #4 ..................... I ............. I ........... F ............. I
16-bit map #1 ............. 0.4268 ........ 0.5937 ...... 0.0400 ........ 0.0696
16-bit map #1 ............. 0.4302 ........ 0.4706 ...... 0.0399 ........ 0.0679
16-bit map #2 .................. S ............. S ........... S ............. S
32-bit map ..................... S ............. S ........... S ............. S
complex map ............... 0.4846 ........ 0.6386 ...... 0.0686 ........ 0.0778
complex map ............... 0.4706 ........ 0.5210 ...... 0.0702 ........ 0.0755
================================================================================
Total 2.9131 4.9354 1.2862 1.0997
Total 2.8615 4.2113 1.2680 1.0922
Skipped 4 4 4 4
Failed 0 0 17 9
Ignored 17 17 0 8
Expand Down

0 comments on commit a0b4806

Please sign in to comment.