watery01 / libyuv

Automatically exported from code.google.com/p/libyuv
0 stars 0 forks source link

ARGBInterpolate is slow #158

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
runyuv10 ARGBInt*

Intel
ARGBInterpolate255_Unaligned (5350 ms)
ARGBInterpolate64_Unaligned (5193 ms)
ARGBInterpolate192_Unaligned (5133 ms)
ARGBInterpolate0_Unaligned (5070 ms)
ARGBInterpolate128_Unaligned (5041 ms)
ARGBInterpolate192_Opt (2038 ms)
ARGBInterpolate255_Opt (1958 ms)
ARGBInterpolate192_Invert (1908 ms)
ARGBInterpolate255_Any (1896 ms)
ARGBInterpolate192_Any (1752 ms)
ARGBInterpolate64_Any (1703 ms)
ARGBInterpolate255_Invert (1658 ms)
ARGBInterpolate64_Invert (1595 ms)
ARGBInterpolate64_Opt (1585 ms)
ARGBInterpolate128_Opt (1579 ms)
ARGBInterpolate128_Invert (1480 ms)
ARGBInterpolate128_Any (1392 ms)
ARGBInterpolate0_Any (717 ms)
ARGBInterpolate0_Opt (655 ms)
ARGBInterpolate0_Invert (638 ms)

Original issue reported on code.google.com by fbarch...@google.com on 17 Nov 2012 at 7:03

GoogleCodeExporter commented 9 years ago
Arm
ARGBInterpolate64_Invert (8964 ms)
ARGBInterpolate255_Invert (8962 ms)
ARGBInterpolate0_Any (8960 ms)
ARGBInterpolate192_Invert (8959 ms)
ARGBInterpolate128_Invert (8958 ms)
ARGBInterpolate0_Invert (8958 ms)
ARGBInterpolate192_Any (8931 ms)
ARGBInterpolate64_Opt (8922 ms)
ARGBInterpolate0_Opt (8911 ms)
ARGBInterpolate255_Unaligned (8903 ms)
ARGBInterpolate128_Unaligned (8899 ms)
ARGBInterpolate255_Opt (8895 ms)
ARGBInterpolate128_Opt (8894 ms)
ARGBInterpolate0_Unaligned (8888 ms)
ARGBInterpolate64_Any (8879 ms)
ARGBInterpolate192_Opt (8877 ms)
ARGBInterpolate128_Any (8873 ms)
ARGBInterpolate192_Unaligned (8871 ms)
ARGBInterpolate64_Unaligned (8865 ms)
ARGBInterpolate255_Any (8858 ms)

Original comment by fbarch...@google.com on 17 Nov 2012 at 7:09

GoogleCodeExporter commented 9 years ago
Specialized versions for 0, 64, 128, 192.

Intel
c:\src\libyuv\trunk>runyuv10 Int*

c:\src\libyuv\trunk>set LIBYUV_REPEAT=1000

c:\src\libyuv\trunk>build\release\libyuv_unittest --gtest_filter=*Int*   | sed 
"s/\(.*(\)\([0-9]*\)\( ms)\)/\2 - \1\2\3/g"   | \cygwin\bin\sort -rn   | grep ms

5243 - [       OK ] libyuvTest.ARGBInterpolate255_Unaligned (5243 ms)
5166 - [       OK ] libyuvTest.ARGBInterpolate64_Unaligned (5166 ms)
5147 - [       OK ] libyuvTest.ARGBInterpolate128_Unaligned (5147 ms)
5146 - [       OK ] libyuvTest.ARGBInterpolate192_Unaligned (5146 ms)
5126 - [       OK ] libyuvTest.ARGBInterpolate0_Unaligned (5126 ms)
2159 - [       OK ] libyuvTest.ARGBInterpolate255_Invert (2159 ms)
1886 - [       OK ] libyuvTest.ARGBInterpolate128_Any (1886 ms)
1882 - [       OK ] libyuvTest.ARGBInterpolate192_Any (1882 ms)
1876 - [       OK ] libyuvTest.ARGBInterpolate128_Opt (1876 ms)
1875 - [       OK ] libyuvTest.ARGBInterpolate64_Opt (1875 ms)
1728 - [       OK ] libyuvTest.ARGBInterpolate64_Invert (1728 ms)
1691 - [       OK ] libyuvTest.ARGBInterpolate255_Opt (1691 ms)
1671 - [       OK ] libyuvTest.ARGBInterpolate255_Any (1671 ms)
1639 - [       OK ] libyuvTest.ARGBInterpolate64_Any (1639 ms)
1527 - [       OK ] libyuvTest.ARGBInterpolate128_Invert (1527 ms)
1371 - [       OK ] libyuvTest.ARGBInterpolate192_Invert (1371 ms)
1367 - [       OK ] libyuvTest.ARGBInterpolate192_Opt (1367 ms)
899 - [       OK ] libyuvTest.ARGBInterpolate0_Opt (899 ms)
876 - [       OK ] libyuvTest.ARGBInterpolate0_Invert (876 ms)
770 - [       OK ] libyuvTest.ARGBInterpolate0_Any (770 ms)
351 - [       OK ] libyuvTest.TestInterpolate (351 ms)
[==========] 21 tests from 1 test case ran. (49398 ms total)
[----------] 21 tests from libyuvTest (49398 ms total)
c:\src\libyuv\trunk>runyuv10 Int*Opt

c:\src\libyuv\trunk>set LIBYUV_REPEAT=1000

c:\src\libyuv\trunk>build\release\libyuv_unittest --gtest_filter=*Int*Opt   | 
sed "s/\(.*(\)\([0-9]*\)\( ms)\)/\2 - \1\2\3/g"   | \cygwin\bin\sort -rn   | 
grep
ms
2144 - [       OK ] libyuvTest.ARGBInterpolate64_Opt (2144 ms)
1648 - [       OK ] libyuvTest.ARGBInterpolate255_Opt (1648 ms)
1627 - [       OK ] libyuvTest.ARGBInterpolate128_Opt (1627 ms)
1387 - [       OK ] libyuvTest.ARGBInterpolate192_Opt (1387 ms)
828 - [       OK ] libyuvTest.ARGBInterpolate0_Opt (828 ms)
[==========] 5 tests from 1 test case ran. (7635 ms total)
[----------] 5 tests from libyuvTest (7635 ms total)

Arm
chronos@localhost $ ./runyuv10 *Int*
sudo LIBYUV_REPEAT=1000 nice --5 ./libyuv_unittest --gtest_filter=**Int* | sed 
's/\(.*(\)\([0-9]*\)\( ms)\)/\2 - \1\2\3/g' | sort -rn | grep ms
4416 - [       OK ] libyuvTest.ARGBInterpolate255_Unaligned (4416 ms)
4325 - [       OK ] libyuvTest.ARGBInterpolate255_Any (4325 ms)
4312 - [       OK ] libyuvTest.ARGBInterpolate255_Opt (4312 ms)
4289 - [       OK ] libyuvTest.ARGBInterpolate255_Invert (4289 ms)
4041 - [       OK ] libyuvTest.ARGBInterpolate192_Unaligned (4041 ms)
4015 - [       OK ] libyuvTest.ARGBInterpolate192_Invert (4015 ms)
4003 - [       OK ] libyuvTest.ARGBInterpolate64_Unaligned (4003 ms)
3996 - [       OK ] libyuvTest.ARGBInterpolate128_Unaligned (3996 ms)
3988 - [       OK ] libyuvTest.ARGBInterpolate64_Invert (3988 ms)
3958 - [       OK ] libyuvTest.ARGBInterpolate64_Opt (3958 ms)
3950 - [       OK ] libyuvTest.ARGBInterpolate64_Any (3950 ms)
3902 - [       OK ] libyuvTest.ARGBInterpolate192_Opt (3902 ms)
3901 - [       OK ] libyuvTest.ARGBInterpolate128_Any (3901 ms)
3899 - [       OK ] libyuvTest.ARGBInterpolate128_Opt (3899 ms)
3871 - [       OK ] libyuvTest.ARGBInterpolate192_Any (3871 ms)
3842 - [       OK ] libyuvTest.ARGBInterpolate128_Invert (3842 ms)
3035 - [       OK ] libyuvTest.ARGBInterpolate0_Unaligned (3035 ms)
2987 - [       OK ] libyuvTest.ARGBInterpolate0_Invert (2987 ms)
2913 - [       OK ] libyuvTest.ARGBInterpolate0_Any (2913 ms)
2906 - [       OK ] libyuvTest.ARGBInterpolate0_Opt (2906 ms)
634 - [       OK ] libyuvTest.TestInterpolate (634 ms)
[==========] 21 tests from 1 test case ran. (77188 ms total)
[----------] 21 tests from libyuvTest (77188 ms total)
chronos@localhost $ ./runyuv10 *Int*Opt
sudo LIBYUV_REPEAT=1000 nice --5 ./libyuv_unittest --gtest_filter=**Int*Opt | 
sed 's/\(.*(\)\([0-9]*\)\( ms)\)/\2 - \1\2\3/g' | sort -rn | grep ms
4350 - [       OK ] libyuvTest.ARGBInterpolate255_Opt (4350 ms)
4065 - [       OK ] libyuvTest.ARGBInterpolate64_Opt (4065 ms)
3979 - [       OK ] libyuvTest.ARGBInterpolate128_Opt (3979 ms)
3876 - [       OK ] libyuvTest.ARGBInterpolate192_Opt (3876 ms)
3046 - [       OK ] libyuvTest.ARGBInterpolate0_Opt (3046 ms)
[==========] 5 tests from 1 test case ran. (19318 ms total)

Original comment by fbarch...@google.com on 17 Nov 2012 at 7:23

GoogleCodeExporter commented 9 years ago
Fixed in r498
ARGBInterpolate255_Unaligned (4363 ms)
ARGBInterpolate255_Invert (4298 ms)
ARGBInterpolate255_Opt (4273 ms)
ARGBInterpolate255_Any (4223 ms)
ARGBInterpolate64_Unaligned (4049 ms)
ARGBInterpolate192_Unaligned (4012 ms)
ARGBInterpolate64_Any (3958 ms)
ARGBInterpolate192_Invert (3941 ms)
ARGBInterpolate64_Opt (3939 ms)
ARGBInterpolate64_Invert (3939 ms)
ARGBInterpolate192_Any (3939 ms)
ARGBInterpolate192_Opt (3921 ms)
ARGBInterpolate128_Opt (3917 ms)
ARGBInterpolate128_Invert (3896 ms)
ARGBInterpolate128_Unaligned (3894 ms)
ARGBInterpolate128_Any (3891 ms)
ARGBInterpolate0_Unaligned (2959 ms)
ARGBInterpolate0_Any (2956 ms)
ARGBInterpolate0_Opt (2949 ms)
ARGBInterpolate0_Invert (2920 ms)

Original comment by fbarch...@google.com on 20 Nov 2012 at 8:17