[ 
https://issues.apache.org/jira/browse/HADOOP-10674?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14029753#comment-14029753
 ] 

Tsz Wo Nicholas Sze commented on HADOOP-10674:
----------------------------------------------

- Multiple threaded tests.  Then new code runs even better.

java.version = 1.6.0_65
java.runtime.name = Java(TM) SE Runtime Environment
java.runtime.version = 1.6.0_65-b14-462-11M4609
java.vm.version = 20.65-b04-462
java.vm.vendor = Apple Inc.
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
java.vm.specification.version = 1.0
java.specification.version = 1.6
os.arch = x86_64
os.name = Mac OS X
os.version = 10.9.3

Performance Table (The unit is MB/sec; #T = #Theads)
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|       32 |  1 |     255.4 |          945.8 | 270.3% |            1201.3 | 
370.4% |  27.0% |
|       32 |  2 |     185.6 |          920.9 | 396.3% |            1360.5 | 
633.2% |  47.7% |
|       32 |  4 |     124.4 |          738.2 | 493.2% |             966.2 | 
676.4% |  30.9% |
|       32 |  8 |      78.4 |          463.0 | 490.9% |             644.2 | 
722.1% |  39.1% |
|       32 | 16 |      40.8 |          253.8 | 522.7% |             354.9 | 
770.8% |  39.8% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|       64 |  1 |     304.6 |         1049.4 | 244.5% |            1439.6 | 
372.6% |  37.2% |
|       64 |  2 |     264.1 |         1031.1 | 290.5% |            1395.1 | 
428.3% |  35.3% |
|       64 |  4 |     211.7 |          845.7 | 299.5% |            1139.8 | 
438.5% |  34.8% |
|       64 |  8 |     141.9 |          503.0 | 254.4% |             763.1 | 
437.6% |  51.7% |
|       64 | 16 |      77.0 |          272.0 | 253.3% |             419.1 | 
444.3% |  54.1% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|      128 |  1 |     357.0 |         1098.7 | 207.7% |            1541.0 | 
331.6% |  40.3% |
|      128 |  2 |     314.6 |         1091.1 | 246.8% |            1582.5 | 
403.0% |  45.0% |
|      128 |  4 |     283.2 |          831.8 | 193.8% |            1391.7 | 
391.5% |  67.3% |
|      128 |  8 |     229.1 |          525.2 | 129.2% |             846.2 | 
269.3% |  61.1% |
|      128 | 16 |     123.5 |          292.0 | 136.4% |             466.5 | 
277.6% |  59.7% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|      256 |  1 |     388.6 |         1131.3 | 191.1% |            1577.5 | 
306.0% |  39.4% |
|      256 |  2 |     362.4 |         1116.6 | 208.1% |            1445.5 | 
298.9% |  29.5% |
|      256 |  4 |     338.4 |          933.3 | 175.8% |            1294.8 | 
282.6% |  38.7% |
|      256 |  8 |     305.5 |          537.9 |  76.1% |             894.9 | 
193.0% |  66.4% |
|      256 | 16 |     162.8 |          300.9 |  84.8% |             508.0 | 
212.0% |  68.8% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|      512 |  1 |     398.7 |         1153.0 | 189.2% |            1616.9 | 
305.5% |  40.2% |
|      512 |  2 |     384.9 |         1143.5 | 197.1% |            1694.2 | 
340.2% |  48.2% |
|      512 |  4 |     370.3 |          911.0 | 146.0% |            1507.6 | 
307.1% |  65.5% |
|      512 |  8 |     344.7 |          543.1 |  57.5% |             920.8 | 
167.1% |  69.5% |
|      512 | 16 |     179.3 |          366.5 | 104.4% |             532.5 | 
197.0% |  45.3% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|     1024 |  1 |     399.9 |         1152.3 | 188.1% |            1756.4 | 
339.2% |  52.4% |
|     1024 |  2 |     395.1 |         1130.5 | 186.1% |            1753.7 | 
343.9% |  55.1% |
|     1024 |  4 |     383.7 |          940.5 | 145.1% |            1405.3 | 
266.2% |  49.4% |
|     1024 |  8 |     363.3 |          548.3 |  50.9% |             941.8 | 
159.3% |  71.7% |
|     1024 | 16 |     196.8 |          290.8 |  47.8% |             525.8 | 
167.2% |  80.8% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|     2048 |  1 |     408.0 |         1171.5 | 187.2% |            1783.7 | 
337.2% |  52.3% |
|     2048 |  2 |     400.8 |         1166.6 | 191.1% |            1784.0 | 
345.1% |  52.9% |
|     2048 |  4 |     391.4 |          999.8 | 155.4% |            1577.4 | 
303.0% |  57.8% |
|     2048 |  8 |     362.1 |          546.2 |  50.8% |             910.6 | 
151.5% |  66.7% |
|     2048 | 16 |     198.1 |          303.4 |  53.1% |             518.5 | 
161.7% |  70.9% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|     4096 |  1 |     406.7 |         1171.8 | 188.1% |            1773.7 | 
336.1% |  51.4% |
|     4096 |  2 |     405.3 |         1104.5 | 172.5% |            1770.0 | 
336.7% |  60.2% |
|     4096 |  4 |     395.9 |          975.9 | 146.5% |            1352.7 | 
241.6% |  38.6% |
|     4096 |  8 |     364.8 |          535.9 |  46.9% |             924.2 | 
153.4% |  72.5% |
|     4096 | 16 |     186.5 |          285.5 |  53.0% |             551.3 | 
195.6% |  93.1% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|     8192 |  1 |     411.1 |         1172.4 | 185.2% |            1807.7 | 
339.7% |  54.2% |
|     8192 |  2 |     407.0 |         1168.9 | 187.2% |            1684.1 | 
313.8% |  44.1% |
|     8192 |  4 |     399.5 |          940.5 | 135.4% |            1568.1 | 
292.5% |  66.7% |
|     8192 |  8 |     381.7 |          552.7 |  44.8% |             959.6 | 
151.4% |  73.6% |
|     8192 | 16 |     204.2 |          300.1 |  47.0% |             562.4 | 
175.4% |  87.4% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|    16384 |  1 |     414.1 |         1191.6 | 187.8% |            1832.1 | 
342.5% |  53.8% |
|    16384 |  2 |     408.0 |         1166.7 | 186.0% |            1813.4 | 
344.5% |  55.4% |
|    16384 |  4 |     399.3 |          956.9 | 139.6% |            1321.2 | 
230.8% |  38.1% |
|    16384 |  8 |     382.2 |          551.2 |  44.2% |             963.0 | 
152.0% |  74.7% |
|    16384 | 16 |     201.4 |          304.0 |  51.0% |             662.2 | 
228.8% | 117.8% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|    32768 |  1 |     407.1 |         1184.9 | 191.1% |            1834.7 | 
350.7% |  54.8% |
|    32768 |  2 |     408.8 |         1174.7 | 187.3% |            1790.4 | 
337.9% |  52.4% |
|    32768 |  4 |     400.7 |          878.9 | 119.3% |            1477.5 | 
268.7% |  68.1% |
|    32768 |  8 |     372.2 |          548.9 |  47.5% |             916.1 | 
146.2% |  66.9% |
|    32768 | 16 |     213.5 |          298.9 |  40.0% |             557.5 | 
161.1% |  86.5% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|    65536 |  1 |     410.9 |         1149.0 | 179.6% |            1744.6 | 
324.6% |  51.8% |
|    65536 |  2 |     409.5 |         1171.7 | 186.1% |            1802.9 | 
340.3% |  53.9% |
|    65536 |  4 |     401.3 |         1051.0 | 161.9% |            1440.6 | 
258.9% |  37.1% |
|    65536 |  8 |     383.3 |          551.7 |  43.9% |             959.1 | 
150.2% |  73.8% |
|    65536 | 16 |     211.8 |          336.4 |  58.9% |             554.2 | 
161.7% |  64.7% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|   131072 |  1 |     413.3 |         1183.3 | 186.3% |            1822.7 | 
341.0% |  54.0% |
|   131072 |  2 |     409.8 |         1124.4 | 174.4% |            1800.1 | 
339.3% |  60.1% |
|   131072 |  4 |     401.5 |          932.9 | 132.4% |            1566.2 | 
290.1% |  67.9% |
|   131072 |  8 |     387.4 |          551.3 |  42.3% |             958.9 | 
147.6% |  73.9% |
|   131072 | 16 |     226.3 |          297.2 |  31.4% |             542.5 | 
139.7% |  82.5% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|   262144 |  1 |     397.1 |         1192.4 | 200.3% |            1764.9 | 
344.4% |  48.0% |
|   262144 |  2 |     410.4 |         1184.7 | 188.7% |            1811.2 | 
341.3% |  52.9% |
|   262144 |  4 |     401.1 |          952.1 | 137.4% |            1593.1 | 
297.1% |  67.3% |
|   262144 |  8 |     386.3 |          553.6 |  43.3% |             925.8 | 
139.6% |  67.2% |
|   262144 | 16 |     211.4 |          299.7 |  41.8% |             559.6 | 
164.7% |  86.7% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|   524288 |  1 |     408.9 |         1193.3 | 191.8% |            1769.6 | 
332.8% |  48.3% |
|   524288 |  2 |     407.6 |         1123.5 | 175.6% |            1804.9 | 
342.8% |  60.7% |
|   524288 |  4 |     403.1 |          903.6 | 124.2% |            1430.7 | 
255.0% |  58.3% |
|   524288 |  8 |     386.2 |          552.6 |  43.1% |             959.0 | 
148.3% |  73.6% |
|   524288 | 16 |     203.8 |          307.4 |  50.8% |             576.7 | 
182.9% |  87.6% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|  1048576 |  1 |     408.5 |         1186.7 | 190.5% |            1824.5 | 
346.6% |  53.7% |
|  1048576 |  2 |     409.9 |         1122.2 | 173.8% |            1799.6 | 
339.0% |  60.4% |
|  1048576 |  4 |     402.0 |          962.5 | 139.4% |            1311.5 | 
226.3% |  36.3% |
|  1048576 |  8 |     386.8 |          547.9 |  41.7% |             959.3 | 
148.0% |  75.1% |
|  1048576 | 16 |     220.2 |          300.1 |  36.3% |             529.2 | 
140.3% |  76.3% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|  2097152 |  1 |     408.3 |         1177.7 | 188.4% |            1802.0 | 
341.3% |  53.0% |
|  2097152 |  2 |     409.4 |         1108.9 | 170.9% |            1693.3 | 
313.6% |  52.7% |
|  2097152 |  4 |     402.0 |         1015.7 | 152.6% |            1350.8 | 
236.0% |  33.0% |
|  2097152 |  8 |     386.5 |          545.6 |  41.2% |             949.5 | 
145.7% |  74.0% |
|  2097152 | 16 |     215.9 |          298.8 |  38.4% |             542.1 | 
151.1% |  81.4% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|  4194304 |  1 |     410.4 |         1177.4 | 186.9% |            1815.5 | 
342.4% |  54.2% |
|  4194304 |  2 |     407.9 |         1173.4 | 187.7% |            1799.5 | 
341.2% |  53.4% |
|  4194304 |  4 |     401.1 |          658.1 |  64.1% |            1586.4 | 
295.5% | 141.0% |
|  4194304 |  8 |     377.7 |          548.3 |  45.2% |             955.6 | 
153.0% |  74.3% |
|  4194304 | 16 |     212.2 |          300.2 |  41.4% |             542.1 | 
155.4% |  80.6% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
|  8388608 |  1 |     409.9 |         1134.8 | 176.8% |            1797.5 | 
338.5% |  58.4% |
|  8388608 |  2 |     404.0 |         1170.0 | 189.6% |            1741.1 | 
331.0% |  48.8% |
|  8388608 |  4 |     401.7 |          889.8 | 121.5% |            1467.2 | 
265.3% |  64.9% |
|  8388608 |  8 |     377.2 |          548.6 |  45.4% |             955.5 | 
153.3% |  74.2% |
|  8388608 | 16 |     222.6 |          299.7 |  34.7% |             543.4 | 
144.1% |  81.3% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
| 16777216 |  1 |     414.6 |         1161.3 | 180.1% |            1757.5 | 
323.9% |  51.3% |
| 16777216 |  2 |     406.3 |         1119.7 | 175.5% |            1720.1 | 
323.3% |  53.6% |
| 16777216 |  4 |     401.3 |          840.1 | 109.3% |            1361.5 | 
239.3% |  62.1% |
| 16777216 |  8 |     382.4 |          555.8 |  45.3% |             950.9 | 
148.7% |  71.1% |
| 16777216 | 16 |     218.7 |          303.5 |  38.8% |             570.5 | 
160.9% |  88.0% |
|  #Bytes  | #T ||    CRC32 || PureJavaCrc32 | % diff || PureJavaCrc32new | % 
diff | % diff |
| 33554432 |  1 |     413.7 |         1182.3 | 185.8% |            1765.1 | 
326.7% |  49.3% |
| 33554432 |  2 |     410.5 |         1177.7 | 186.9% |            1666.5 | 
305.9% |  41.5% |
| 33554432 |  4 |     400.0 |          857.4 | 114.3% |            1448.8 | 
262.2% |  69.0% |
| 33554432 |  8 |     383.6 |          581.6 |  51.6% |             976.1 | 
154.5% |  67.8% |
| 33554432 | 16 |     214.6 |          325.2 |  51.5% |             610.8 | 
184.6% |  87.8% |


> Rewrite the PureJavaCrc32 loop for performance improvement
> ----------------------------------------------------------
>
>                 Key: HADOOP-10674
>                 URL: https://issues.apache.org/jira/browse/HADOOP-10674
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: performance, util
>            Reporter: Tsz Wo Nicholas Sze
>            Assignee: Tsz Wo Nicholas Sze
>         Attachments: c10674_20140609.patch, c10674_20140609b.patch, 
> c10674_20140610.patch
>
>
> Below are some performance improvement opportunities performance improvement 
> in PureJavaCrc32.
> - eliminate "off += 8; len -= 8;"
> - replace T8_x_start with hard coded constants
> - eliminate c0 - c7 local variables
> In my machine, there are 30% to 50% improvement for most of the cases.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to