aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/MatrixBench.cpp
Commit message (Collapse)AuthorAge
* Revert of Change mapRectScaleTranslate to pass args/ret by value (patchset ↵Gravatar halcanary2016-08-10
| | | | | | | | | | | | | | | | | | | | | | | | | | #2 id:20001 of https://codereview.chromium.org/2138943002/ ) Reason for revert: Build-Ubuntu-GCC-Arm7-Release-Android fails. Original issue's description: > Change mapRectScaleTranslate to pass args/ret by value > > This reverts commit 6092b6e0e57be20d2e1ad079c0af133d2f67bfd3. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2138943002 > > Committed: https://skia.googlesource.com/skia/+/1bd13ca922d6448d595064faee486eaf3fa56e56 TBR=mtklein@google.com,msarett@google.com,reed@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2234843002
* Change mapRectScaleTranslate to pass args/ret by valueGravatar reed2016-08-10
| | | | | | | | | This reverts commit 6092b6e0e57be20d2e1ad079c0af133d2f67bfd3. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2138943002 Review-Url: https://codereview.chromium.org/2138943002
* Revert of change mapRectScaleTranslate to pass args/ret by value (patchset ↵Gravatar reed2016-07-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #1 id:1 of https://codereview.chromium.org/2137853002/ ) Reason for revert: Triggered a compiler bug on Android? FAILED: /usr/bin/ccache /b/work/skia/platform_tools/android/bin/../toolchains/arm-r11c-14/bin/arm-linux-androideabi-g++ -MMD -MF obj/src/core/core.SkMatrix.o.d -DSK_INTERNAL -DSK_GAMMA_APPLY_TO_A8 -DQT_NO_KEYWORDS -DSK_ALLOW_STATIC_GLOBAL_INITIALIZERS=0 -DSK_SUPPORT_GPU=1 -DSK_FORCE_DISTANCE_FIELD_TEXT=0 -DSK_HAS_GIF_LIBRARY -DSK_HAS_JPEG_LIBRARY -DSK_HAS_PNG_LIBRARY -DSK_HAS_WEBP_LIBRARY -DSK_TEST_QCMS -DSK_IS_BOT -DSK_CODEC_DECODES_RAW -DSK_ARM_HAS_NEON -DSK_BUILD_FOR_ANDROID -DSK_GAMMA_EXPONENT=1.4 -DSK_GAMMA_CONTRAST=0.0 -DSKIA_DLL -DSKIA_IMPLEMENTATION=1 -DSK_SUPPORT_LEGACY_CLIPTOLAYERFLAG -DNDEBUG -I../../../include/c -I../../../include/config -I../../../include/core -I../../../include/pathops -I../../../include/ports -I../../../include/private -I../../../include/utils -I../../../include/images -I../../../src/core -I../../../src/sfnt -I../../../src/image -I../../../src/opts -I../../../src/utils -I../../../include/gpu -I../../../src/gpu -I../../../platform_tools/android/third_party/cpufeatures -fPIC -g -fno-exceptions -fstrict-aliasing -Wall -Wextra -Winit-self -Wpointer-arith -Wsign-compare -Wvla -Wno-unused-parameter -Werror -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=softfp -fuse-ld=gold -O2 -std=c++11 -fno-rtti -fno-threadsafe-statics -Wnon-virtual-dtor -c ../../../src/core/SkMatrix.cpp -o obj/src/core/core.SkMatrix.o ../../../src/core/SkMatrix.cpp: In member function 'SkRect SkMatrix::mapRectScaleTranslate(SkRect) const': ../../../src/core/SkMatrix.cpp:1120:1: error: unrecognizable insn: } ^ (insn 32 31 33 2 (set (reg:V4SF 115 [ D.83077 ]) (unspec:V4SF [ (mem/c:V4SF (reg/f:SI 104 virtual-incoming-args) [0 MEM[(const __builtin_neon_sf[4] *)&src]+0 S16 A32]) ] UNSPEC_VLD1)) /b/work/skia/platform_tools/android/toolchains/arm-r11c-14/lib/gcc/arm-linux-androideabi/4.9/include/arm_neon.h:8693 -1 (nil)) ../../../src/core/SkMatrix.cpp:1120:1: internal compiler error: in extract_insn, at recog.c:2202 Please submit a full bug report, with preprocessed source if appropriate. See <http://source.android.com/source/report-bugs.html> for instructions. Original issue's description: > change mapRectScaleTranslate to pass args/ret by value > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2137853002 > > TBR=mtklein > > Committed: https://skia.googlesource.com/skia/+/14dce6ed5934d7a6e1fac79f8e76e12f5670aae2 TBR=msarett@google.com,mtklein@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2139523002
* change mapRectScaleTranslate to pass args/ret by valueGravatar reed2016-07-10
| | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2137853002 TBR=mtklein Review-Url: https://codereview.chromium.org/2137853002
* speed up maprect for scale+trans caseGravatar reed2016-06-30
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2111703002 Review-Url: https://codereview.chromium.org/2111703002
* Style bikeshed - remove extraneous whitespaceGravatar halcanary2016-03-29
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1842753002 Review URL: https://codereview.chromium.org/1842753002
* Remove const from `const int loops`.Gravatar mtklein2015-10-01
| | | | | | | | This drives me nuts, and prevents `while (loops --> 0)`. BUG=skia: Review URL: https://codereview.chromium.org/1379923005
* Fix for nexus 5 crashing in GL benchesGravatar joshualitt2015-09-30
| | | | | | | | | | GLBenches do not expect gl state to change between onPerCanvasPreDraw and *PostDraw, but we do a clear and sometimes we clear as draw. This causes us to bind vertex objects / programs / etc. This change creates two new virtual methods which are called right before and immediately after timing. BUG=skia: Review URL: https://codereview.chromium.org/1379853003
* Fix up -Winconsistent-missing-overrideGravatar mtklein2015-07-13
| | | | | | | | | | | | | | (and a couple presubmit fixes) This allows us to turn back on -Werror for LLVM coverage builds, and more generally supports building with Clang 3.7. No public API changes. TBR=reed@google.com BUG=skia: Review URL: https://codereview.chromium.org/1232463006
* use Sk4f for matrix mathGravatar reed2015-03-29
| | | | | | | | | Need to land SK_SUPPORT_LEGACY_SCALAR_MAPPOINTS in chrome to suppress Affine version which causes slight differences (which will need to be rebaselined) BUG=skia: Review URL: https://codereview.chromium.org/1045493002
* use table of procs (and unrolling) to speed up mapPtsGravatar reed2015-03-27
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/1040783002
* C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla}Gravatar mtklein2015-03-25
| | | | | | | | | NOPRESUBMIT=true BUG=skia: DOCS_PREVIEW= https://skia.org/?cl=1037793002 Review URL: https://codereview.chromium.org/1037793002
* remove meaningless matrix benches, add mapPts() and add new benchesGravatar reed2015-03-23
| | | | | | | | | | mapPts definitely faster than mapPoints (identity and perspective same speed). Up to 3x for large values of N. cloned from https://codereview.chromium.org/1031443002/ BUG=skia: Review URL: https://codereview.chromium.org/1030653002
* Fix up all the easy virtual ... SK_OVERRIDE cases.Gravatar mtklein2015-01-09
| | | | | | | | | | | | This fixes every case where virtual and SK_OVERRIDE were on the same line, which should be the bulk of cases. We'll have to manually clean up the rest over time unless I level up in regexes. for f in (find . -type f); perl -p -i -e 's/virtual (.*)SK_OVERRIDE/\1SK_OVERRIDE/g' $f; end BUG=skia: Review URL: https://codereview.chromium.org/806653007
* Remove Sk prefix from some bench classes.Gravatar tfarina2014-06-19
| | | | | | | | | | | | | | | | This idea came while commenting on https://codereview.chromium.org/343583005/ Since SkBenchmark, SkBenchLogger and SkGMBench are not part of the Skia library, they should not have the Sk prefix. BUG=None TEST=make all R=mtklein@google.com Author: tfarina@chromium.org Review URL: https://codereview.chromium.org/347823004
* Clean up another silly race in benches when run concurrently.Gravatar mtklein2014-06-02
| | | | | | | | | BUG=skia: R=mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/309193003
* Simplify benchmark internal API.Gravatar commit-bot@chromium.org2013-12-03
| | | | | | | | | | | | | | | | | | I'm not quite sure why I wrote such a convoluted API with setLoops()/getLoops(). This replaces it with a loops argument passed to onDraw(). This CL is largely mechanical translation from the old API to the new one. MathBench used this->getLoops() outside onDraw(), which seems incorrect. I fixed it. BUG= R=djsollen@google.com Author: mtklein@google.com Review URL: https://codereview.chromium.org/99893003 git-svn-id: http://skia.googlecode.com/svn/trunk@12466 2bbb7eff-a529-9590-31e7-b0007b416f81
* remove SkFloatToScalar macroGravatar commit-bot@chromium.org2013-11-25
| | | | | | | | | | | BUG= R=reed@google.com, djsollen@google.com Author: caryclark@google.com Review URL: https://codereview.chromium.org/85463005 git-svn-id: http://skia.googlecode.com/svn/trunk@12385 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement a benchmark for GrResourceCacheGravatar commit-bot@chromium.org2013-11-21
| | | | | | | | | | | | | | | | | | | | | | | Adds "grresourcecache_add" and "grresourcecache_find" bench tests to test GrResourceCache::add and GrResourceCache::find. The tests work only with GPU backends, since GrResourceCache needs an GrGpu. Modifies bench tests to override SkBenchmark::isSuitableFor(Backend) function that specifies what kind of backend the test is inteded for. This replaces the previous "fIsRendering" flag that would indicate test that did no rendering. Adds SkCanvas::getGrContext() call to get the GrContext that the canvas ends up drawing to. The member function solves a common use-case that is also used in the benchmark added here. R=mtklein@google.com, bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/73643005 git-svn-id: http://skia.googlecode.com/svn/trunk@12334 2bbb7eff-a529-9590-31e7-b0007b416f81
* Refactoring: get rid of the SkBenchmark void* parameter.Gravatar mtklein@google.com2013-09-13
| | | | | | | | | | | While I was doing massive sed-ing, I also converted every bench to use DEF_BENCH instead of registering the ugly manual way. BUG= R=scroggo@google.com Review URL: https://codereview.chromium.org/23876006 git-svn-id: http://skia.googlecode.com/svn/trunk@11263 2bbb7eff-a529-9590-31e7-b0007b416f81
* Major bench refactoring.Gravatar mtklein@google.com2013-09-10
| | | | | | | | | | | | | - Use FLAGS_. - Remove outer repeat loop. - Tune inner loop automatically. BUG=skia:1590 R=epoger@google.com, scroggo@google.com Review URL: https://codereview.chromium.org/23478013 git-svn-id: http://skia.googlecode.com/svn/trunk@11187 2bbb7eff-a529-9590-31e7-b0007b416f81
* Change old PRG to be SkLCGRandom; change new one to SkRandomGravatar commit-bot@chromium.org2013-09-09
| | | | | | | | | | | | | | The goal here is to get people to start using the new random number generator, while leaving the old one in place so we don't have to rebaseline GMs. R=reed@google.com, bsalomon@google.com Author: jvanverth@google.com Review URL: https://chromiumcodereview.appspot.com/23576015 git-svn-id: http://skia.googlecode.com/svn/trunk@11169 2bbb7eff-a529-9590-31e7-b0007b416f81
* Switch out random number generator for tests, benches, samples.Gravatar commit-bot@chromium.org2013-09-06
| | | | | | | | | | | | This change makes tests, benches and samples use the new SkMWCRandom PRNG. GMs will be saved for another time, as they'll require rebaselining. R=reed@google.com, bsalomon@google.com Author: jvanverth@google.com Review URL: https://chromiumcodereview.appspot.com/23653018 git-svn-id: http://skia.googlecode.com/svn/trunk@11136 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revise SVD code to remove arctangents. Gravatar commit-bot@chromium.org2013-09-03
| | | | | | | | | | | | Also added bench for timing matrix decomposition. R=reed@google.com Author: jvanverth@google.com Review URL: https://chromiumcodereview.appspot.com/23596006 git-svn-id: http://skia.googlecode.com/svn/trunk@11066 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix more clang errors.Gravatar tfarina@chromium.org2013-04-05
| | | | | | | | | | Fixed -Wunused-private-field errors. R=reed@google.com,bsalomon@google.com Review URL: https://codereview.chromium.org/13474012 git-svn-id: http://skia.googlecode.com/svn/trunk@8547 2bbb7eff-a529-9590-31e7-b0007b416f81
* Bench : Unused parameters cleanupGravatar sugoi@google.com2013-03-05
| | | | | | | I removed unused parameters in bench wherever it was trivial to do so. Review URL: https://codereview.appspot.com/7411046 git-svn-id: http://skia.googlecode.com/svn/trunk@7988 2bbb7eff-a529-9590-31e7-b0007b416f81
* add matrixbench for invert_translateGravatar reed@google.com2013-01-04
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7015 2bbb7eff-a529-9590-31e7-b0007b416f81
* use DEF_BENCH to simplify registrationGravatar reed@google.com2013-01-04
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7012 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fixed valgrind complaint in MatrixBenchGravatar robertphillips@google.com2012-09-17
| | | | | | | | https://codereview.appspot.com/6492129/ git-svn-id: http://skia.googlecode.com/svn/trunk@5566 2bbb7eff-a529-9590-31e7-b0007b416f81
* Let SkBenchmark classes specify that they do no rendering.Gravatar tomhudson@google.com2012-09-13
| | | | | | | | | | | Doing this gives us a 15-20% speedup in bench cycle time. Here again I'm just picking the easy targets. http://codereview.appspot.com/6500115/ git-svn-id: http://skia.googlecode.com/svn/trunk@5525 2bbb7eff-a529-9590-31e7-b0007b416f81
* Result of running tools/sanitize_source_files.py (which was added in ↵Gravatar rmistry@google.com2012-08-23
| | | | | | | | | https://codereview.appspot.com/6465078/) This CL is part I of IV (I broke down the 1280 files into 4 CLs). Review URL: https://codereview.appspot.com/6485054 git-svn-id: http://skia.googlecode.com/svn/trunk@5262 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fixing type mask computation in SkMatrix to make it faster and make it so ↵Gravatar junov@chromium.org2012-07-12
| | | | | | | | | | | | | that matrices have the same type masks as their inverses. This patch also add bench tests that call invert() followed by mapRect() on various types of matrices. Performance of these tests was greatly affected by typemask computation Review URL: http://codereview.appspot.com/6380043/ BUG=https://code.google.com/p/chromium/issues/detail?id=135259 git-svn-id: http://skia.googlecode.com/svn/trunk@4562 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fixes int to scalar warnings. This checkin changes the range of random ↵Gravatar bsalomon@google.com2011-11-10
| | | | | | | | | matrix values in a benchmark but it is believed not to affect the runtime. Review URL: http://codereview.appspot.com/5371045/ git-svn-id: http://skia.googlecode.com/svn/trunk@2653 2bbb7eff-a529-9590-31e7-b0007b416f81
* In debug builds, only run each benchmark 1 time (test for assertion-breakage,Gravatar tomhudson@google.com2011-10-28
| | | | | | | | | not performance). codereview.appspot.com/5314064/ git-svn-id: http://skia.googlecode.com/svn/trunk@2552 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix some warnings on VS2010 Gravatar bsalomon@google.com2011-10-24
| | | | | | | | Review URL: http://codereview.appspot.com/5312051/ git-svn-id: http://skia.googlecode.com/svn/trunk@2520 2bbb7eff-a529-9590-31e7-b0007b416f81
* Automatic update of all copyright notices to reflect new license terms.Gravatar epoger@google.com2011-07-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have manually examined all of these diffs and restored a few files that seem to require manual adjustment. The following files still need to be modified manually, in a separate CL: android_sample/SampleApp/AndroidManifest.xml android_sample/SampleApp/res/layout/layout.xml android_sample/SampleApp/res/menu/sample.xml android_sample/SampleApp/res/values/strings.xml android_sample/SampleApp/src/com/skia/sampleapp/SampleApp.java android_sample/SampleApp/src/com/skia/sampleapp/SampleView.java experimental/CiCarbonSampleMain.c experimental/CocoaDebugger/main.m experimental/FileReaderApp/main.m experimental/SimpleCocoaApp/main.m experimental/iOSSampleApp/Shared/SkAlertPrompt.h experimental/iOSSampleApp/Shared/SkAlertPrompt.m experimental/iOSSampleApp/SkiOSSampleApp-Base.xcconfig experimental/iOSSampleApp/SkiOSSampleApp-Debug.xcconfig experimental/iOSSampleApp/SkiOSSampleApp-Release.xcconfig gpu/src/android/GrGLDefaultInterface_android.cpp gyp/common.gypi gyp_skia include/ports/SkHarfBuzzFont.h include/views/SkOSWindow_wxwidgets.h make.bat make.py src/opts/memset.arm.S src/opts/memset16_neon.S src/opts/memset32_neon.S src/opts/opts_check_arm.cpp src/ports/SkDebug_brew.cpp src/ports/SkMemory_brew.cpp src/ports/SkOSFile_brew.cpp src/ports/SkXMLParser_empty.cpp src/utils/ios/SkImageDecoder_iOS.mm src/utils/ios/SkOSFile_iOS.mm src/utils/ios/SkStream_NSData.mm tests/FillPathTest.cpp Review URL: http://codereview.appspot.com/4816058 git-svn-id: http://skia.googlecode.com/svn/trunk@1982 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix bad merge which broke compiles.Gravatar tomhudson@google.com2011-06-24
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@1716 2bbb7eff-a529-9590-31e7-b0007b416f81
* New benchmark for SkMatrix::computeType().Gravatar tomhudson@google.com2011-06-24
| | | | | | | | Utility function in SkMatrix to make benchmarking more accurate. git-svn-id: http://skia.googlecode.com/svn/trunk@1710 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix scale metric bench.Gravatar bungeman@google.com2011-06-08
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@1549 2bbb7eff-a529-9590-31e7-b0007b416f81
* New benchmarks to determine performance of matrix-point multiplication for ↵Gravatar tomhudson@google.com2011-06-07
| | | | | | | | | | floating point vs. double matrices. Over-the-shoulder review by reed@. git-svn-id: http://skia.googlecode.com/svn/trunk@1525 2bbb7eff-a529-9590-31e7-b0007b416f81
* add internal multiplier for loopcount, to reduce variance for simple/fast testsGravatar reed@google.com2011-06-06
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@1510 2bbb7eff-a529-9590-31e7-b0007b416f81
* make concat_float distinguishable using -matchGravatar reed@google.com2011-06-06
| | | | | | | | init our float/double arrays, so we get reliable timings (NaNs are slow) git-svn-id: http://skia.googlecode.com/svn/trunk@1509 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove warnings, improve benchmark quality, complicate benchmark results:Gravatar tomhudson@google.com2011-06-03
| | | | | | | | | | | - data on heap instead of stack - more closely match operations of actual SkMatrix::setConcat() - avoid random perturbations, do_always; use perf annotate to verify that assembly isn't getting optimized away git-svn-id: http://skia.googlecode.com/svn/trunk@1500 2bbb7eff-a529-9590-31e7-b0007b416f81
* <body onunload="M_unloadPage();">Gravatar tomhudson@google.com2011-06-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | <!-- Begin help window --> <script type="text/javascript"><!-- var xsrfToken = 'dd5d1a57ca1d5440593050fdc596d377'; var helpDisplayed = false; document.onclick = M_clickCommon; var media_url = "/static/"; var base_url = "/"; var publish_link = "/4571045/publish"; // --> </script> <div id="help" style="display: none;"> <div style="font-size: medium; text-align: center;">Keyboard Shortcuts</div> <hr> <table width="100%"> <tbody><tr valign="top"> <td> <table width="100%"> <tbody><tr> <td></td><th>File</th> </tr> <tr> <td class="shortcut"><span class="letter">u</span> <b>:</b></td><td>up to issue</td> </tr> <tr> <td class="shortcut"><span class="letter">m</span> <b>:</b></td><td>publish + mail comments</td> </tr> <tr> <td class="shortcut"><span class="letter">M</span> <b>:</b></td><td>edit review message</td> </tr> <tr> <td class="shortcut"><span class="letter">j</span> / <span class="letter">k</span> <b>:</b></td><td>jump to file after / before current file</td> </tr> <tr> <td class="shortcut"><span class="letter">J</span> / <span class="letter">K</span> <b>:</b></td><td>jump to next file with a comment after / before current file</td> </tr> <tr> <td></td><th>Side-by-side diff</th> </tr> <tr> <td class="shortcut"><span class="letter">i</span> <b>:</b></td><td>toggle intra-line diffs</td> </tr> <tr> <td class="shortcut"><span class="letter">e</span> <b>:</b></td><td>expand all comments</td> </tr> <tr> <td class="shortcut"><span class="letter">c</span> <b>:</b></td><td>collapse all comments</td> </tr> <tr> <td class="shortcut"><span class="letter">s</span> <b>:</b></td><td>toggle showing all comments</td> </tr> <tr> <td class="shortcut"><span class="letter">n</span> / <span class="letter">p</span> <b>:</b></td><td>next / previous diff chunk or comment</td> </tr> <tr> <td class="shortcut"><span class="letter">N</span> / <span class="letter">P</span> <b>:</b></td><td>next / previous comment</td> </tr> <tr> <td class="shortcut"><span class="letter">&lt;Enter&gt;</span> <b>:</b></td><td>respond to / edit current comment</td> </tr> </tbody></table> </td> <td> <table width="100%"> <tbody><tr> <td></td><th>Issue</th> </tr> <tr> <td class="shortcut"><span class="letter">u</span> <b>:</b></td><td>up to list of issues</td> </tr> <tr> <td class="shortcut"><span class="letter">m</span> <b>:</b></td><td>publish + mail comments</td> </tr> <tr> <td class="shortcut"><span class="letter">j</span> / <span class="letter">k</span> <b>:</b></td><td>jump to patch after / before current patch</td> </tr> <tr> <td class="shortcut"><span class="letter">o</span> / <span class="letter">&lt;Enter&gt;</span> <b>:</b></td><td>open current patch in side-by-side view</td> </tr> <tr> <td class="shortcut"><span class="letter">i</span> <b>:</b></td><td>open current patch in unified diff view</td> </tr> <tr><td>&nbsp;</td></tr> <tr><td></td><th>Issue List</th></tr> <tr> <td class="shortcut"><span class="letter">j</span> / <span class="letter">k</span> <b>:</b></td><td>jump to issue after / before current issue</td> </tr> <tr> <td class="shortcut"><span class="letter">o</span> / <span class="letter">&lt;Enter&gt;</span> <b>:</b></td><td>open current issue</td> </tr> <tr> <td class="shortcut"><span class="letter">#</span> <b>:</b></td> <td>close issue</td> </tr> <tr><td>&nbsp;</td></tr> <tr> <td></td><th>Comment/message editing</th> </tr> <tr> <td class="shortcut"><span class="letter">&lt;Ctrl&gt;</span> + <span class="letter">s</span> <b>:</b></td><td>save comment</td> </tr> <tr> <td class="shortcut"><span class="letter">&lt;Esc&gt;</span> <b>:</b></td><td>cancel edit</td> </tr> </tbody></table> </td> </tr> </tbody></table> </div> <!-- End help window --> <div align="right"> <div style="float:left; font-weight:bold"><i>Rietveld</i> Code Review Tool</div> <b>tomhudson@google.com (TomH)</b> | <a class="novisit" href="/settings">Settings</a> | <a class="novisit" target="_blank" href="http://code.google.com/p/rietveld/wiki/CodeReviewHelp">Help</a> | <a class="novisit" target="_blank" href="http://code.google.com/p/rietveld/issues/list">Bug tracker</a> | <a class="novisit" target="_blank" href="http://groups.google.com/group/codereview-discuss">Discussion group</a> | <a class="novisit" target="_blank" href="http://code.google.com/p/rietveld">Source code</a> | <a class="novisit" href="http://codereview.appspot.com/_ah/logout?continue=https://www.google.com/accounts/Logout%3Fcontinue%3Dhttps://appengine.google.com/_ah/logout%253Fcontinue%253Dhttp://codereview.appspot.com/4571045/%26service%3Dah">Sign out</a> </div> <div class="counter">(691)</div> <div class="mainmenu"> <a href="/" class="active">Issues</a> <a href="/repos">Repositories</a> <a href="/search">Search</a> </div> <div class="mainmenu2"> <a href="/use_uploadpy">Create Issue</a> | <a href="/mine">My Issues</a> | <a href="/starred">Starred</a> | <a href="/all">Open</a> | <a href="/all?closed=1">All</a> </div> <div> <h2> <span id="issue-star-4571045"> <a href="javascript:M_addIssueStar(4571045)"> <img src="/static/star-dark.gif" width="15" height="15" border="0"></a> </span> <span class="issue-close" id="issue-close-4571045"> <a href="javascript:M_closeIssue(4571045)"> <img src="/static/close.gif" title="Close This Issue" width="15" height="15" border="0"></a> </span> Issue <a href="/4571045/" onmouseover="M_showPopUp(this, 'popup-issue');"> 4571045</a>: New matrix benchmarks to evaluate ::setConcat implementation options </h2> <table class="issue-details" border="0" width="100%"> <tbody><tr valign="top"> <td class="meta" width="20%"> <div> <a class="novisit" href="/4571045/edit"> Edit Issue </a> <br> <a class="novisit" href="/4571045/publish"> Publish+Mail Comments </a> ('m') <br> <a class="novisit" href="/4571045/diff/1/bench/MatrixBench.cpp"> <b>Start Review</b> </a> </div> <div class="issue_details_sidebar"> <div><b>Created:</b><br> 16 minutes ago by me </div> <div><b>Modified:</b><br> 0 minutes ago </div> <div><b>Reviewers:</b><br> <a href="/user/reed1" onmouseover="M_showUserInfoPopup(this)">reed1</a> </div> <div><b>CC:</b><br> </div> <div><b>Base URL:</b><br> http://skia.googlecode.com/svn/trunk/ </div> <div><b>Visibility:</b><br> Public. </div> </div> </td> <td style="padding-left: .8em; padding-right: .8em;" width="80%"> <h3><a id="issue-description-pointer" href="javascript:M_toggleSection('issue-description')" class="toggled-section opentriangle"> Description</a></h3> <div id="issue-description" style="margin-left:15px;"> <pre>On platforms that use Float (instead of Fixed), SkMatrix stores its internal values as floats, but setConcat() needs extra precision and so uses doubles to contain intermediate values. These three benchmarks compare the speed of float-only, double-only, and float-cast-to-double implementations of a chunk of code extracted from the non-perspective case of setConcat(). </pre> </div> <h3> <a id="ps-1-pointer" href="javascript:M_toggleSectionForPS('4571045', '1')" class="toggled-section opentriangle"> Patch Set 1 </a> </h3> <div id="ps-1" style=""> <div class="issue-list"> <div class="pagination"> <div style="float: left;"> <i>Created:</i> 16 minutes ago </div> <div style="float: right;"> <a href="/download/issue4571045_1.diff"> Download raw patch set</a> </div> <div style="clear:both;"></div> </div> <table id="queues" style="clear:both;"> <tbody><tr align="left"> <th colspan="2"></th> <th>Unified diffs</th> <th>Side-by-side diffs</th> <th>Delta from patch set</th> <th colspan="3">Stats</th> <th>Patch</th> </tr> <tr name="patch"> <td class="first" width="14"><img src="/static/closedtriangle.gif" style="" width="12" height="9"></td> <td style="white-space: nowrap">M </td> <td> <a class="noul" href="/4571045/patch/1/2"> bench/MatrixBench.cpp </a> </td> <td> <a class="noul" href="/4571045/diff/1/bench/MatrixBench.cpp"> View </a> </td> <td style="white-space: nowrap"> </td> <td style="white-space: nowrap">4 chunks</td> <td style="white-space: nowrap">+114 lines, -3 lines</td> <td style="white-space: nowrap"> 0 comments </td> <td> <a href="/download/issue4571045_1_2.diff" title="Download patch for bench/MatrixBench.cpp"> Download </a> </td> </tr> </tbody></table> </div> </div> <h3> <a id="messages-pointer" href="javascript:M_toggleSection('messages')" class="toggled-section opentriangle"> Messages </a> </h3> <div><i>Total messages: 3</i></div> <div id="messages"> <div style="margin-bottom: .5em;"> <a href="javascript:M_showAllComments('cl', 3)"> Expand All Messages</a> | <a href="javascript:M_hideAllComments('cl', 3)"> Collapse All Messages</a> </div> <div class="message " id="msg-agpjb2RlcmV2aWV3chwLEgVJc3N1ZRil_5YCDAsSB01lc3NhZ2UY6QcM" name="0"> <a name="msg-agpjb2RlcmV2aWV3chwLEgVJc3N1ZRil_5YCDAsSB01lc3NhZ2UY6QcM"></a> <div class="header"> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <tbody><tr class="comment_title" onclick="M_switchChangelistComment(0)"> <td style="padding-left: 5px; white-space: nowrap;"> <b>me</b> </td> <td width="100%"> <table style="table-layout:fixed; white-space: nowrap;" width="100%"> <tbody><tr> <td> <div style="white-space: nowrap; overflow: hidden;" class="extra" id="cl-preview-0"> </div> </td> </tr> </tbody></table> </td> <td align="right" style="white-space: nowrap; padding-right: 5px;"> 13 minutes ago </td> </tr> </tbody></table> </div> <div id="cl-comment-0" style="display: none;"> <div class="message-body"> <pre name="cl-message-0"></pre> </div> <div class="message-actions"> <a href="javascript:M_replyToMessage('0', '2011/06/03 18:57:35', 'TomH')" id="message-reply-href-0">Reply</a> <textarea rows="7" cols="70" name="message" style="display:none"></textarea> <div id="message-reply-0" style="display:none;"></div> </div> </div> </div> <div class="message " id="msg-agpjb2RlcmV2aWV3chwLEgVJc3N1ZRil_5YCDAsSB01lc3NhZ2UY0Q8M" name="1"> <a name="msg-agpjb2RlcmV2aWV3chwLEgVJc3N1ZRil_5YCDAsSB01lc3NhZ2UY0Q8M"></a> <div class="header"> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <tbody><tr class="comment_title" onclick="M_switchChangelistComment(1)"> <td style="padding-left: 5px; white-space: nowrap;"> <b>reed1</b> </td> <td width="100%"> <table style="table-layout:fixed; white-space: nowrap;" width="100%"> <tbody><tr> <td> <div style="white-space: nowrap; overflow: hidden;" class="extra" id="cl-preview-1"> 1. lets remove the "fix" from the function name. just muladdmul I think 2. we ... </div> </td> </tr> </tbody></table> </td> <td align="right" style="white-space: nowrap; padding-right: 5px;"> 10 minutes ago </td> </tr> </tbody></table> </div> <div id="cl-comment-1" style="display: none;"> <div class="message-body"> <pre name="cl-message-1">1. lets remove the "fix" from the function name. just muladdmul I think 2. we can remove the return, since it will be compiled away anyway 3. nice checkin comment! 4. what are the results like?</pre> </div> <div class="message-actions"> <a href="javascript:M_replyToMessage('1', '2011/06/03 19:00:39', 'reed1')" id="message-reply-href-1">Reply</a> <textarea rows="7" cols="70" name="message" style="display:none"></textarea> <div id="message-reply-1" style="display:none;"></div> </div> </div> </div> <div class="message " id="msg-agpjb2RlcmV2aWV3chwLEgVJc3N1ZRil_5YCDAsSB01lc3NhZ2UYuRcM" name="2"> <a name="msg-agpjb2RlcmV2aWV3chwLEgVJc3N1ZRil_5YCDAsSB01lc3NhZ2UYuRcM"></a> <div class="header"> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <tbody><tr class="comment_title" onclick="M_switchChangelistComment(2)"> <td style="padding-left: 5px; white-space: nowrap;"> <b>me</b> </td> <td width="100%"> <table style="table-layout:fixed; white-space: nowrap;" width="100%"> <tbody><tr> <td> <div style="white-space: nowrap; overflow: hidden; visibility: hidden;" class="extra" id="cl-preview-2"> &gt; 4. what are the results like? For posterity: tomhudson@tomhudson-zx600-linux:/usr/local/google/src/skia3$ out/bench/bench -match matrix_concat -repeat 1000 ... </div> </td> </tr> </tbody></table> </td> <td align="right" style="white-space: nowrap; padding-right: 5px;"> 0 minutes ago </td> </tr> </tbody></table> </div> <div id="cl-comment-2"> <div class="message-body"> <pre name="cl-message-2">&gt; 4. what are the results like? For posterity: tomhudson@tomhudson-zx600-linux:/usr/local/google/src/skia3$ out/bench/bench -match matrix_concat -repeat 1000 skia bench: alpha=0xFF antialias=1 filter=0 running bench [640 480] matrix_concat_double 8888: msecs = 0.79 565: msecs = 0.79 GPU: msecs = 0.79 running bench [640 480] matrix_concat_floatdouble 8888: msecs = 0.97 565: msecs = 0.97 GPU: msecs = 0.97 running bench [640 480] matrix_concat_float 8888: msecs = 0.74 565: msecs = 0.73 GPU: msecs = 0.74</pre> </div> <div class="message-actions"> <a href="javascript:M_replyToMessage('2', '2011/06/03 19:11:06', 'TomH')" id="message-reply-href-2">Reply</a> <textarea rows="7" cols="70" name="message" style="display:none"></textarea> <div id="message-reply-2" style="display:none;"></div> </div> </div> </div> <div> <a href="javascript:M_showAllComments('cl', 3)"> Expand All Messages</a> | <a href="javascript:M_hideAllComments('cl', 3)"> Collapse All Messages</a> </div> </div> <script language="JavaScript" type="text/javascript"> <!-- document.onkeydown = M_changelistKeyDown; var dashboardState = new M_DashboardState(window, 'patch', 'M_CLPatchMarker'); M_switchChangelistCommentByAnchor(); // --> </script> <div style="display:none;"> <form method="POST" action="/4571045/publish" id="message-reply-form"> <input type="hidden" name="xsrf_token" value="dd5d1a57ca1d5440593050fdc596d377"> <div></div> <input type="hidden" name="subject" value="New matrix benchmarks to evaluate ::setConcat implementation options"> <input type="hidden" name="message_only" value="1"> <input type="submit" value="Send Message"> <input type="button" value="Discard" name="discard"> <input type="checkbox" name="send_mail" value="1" id="message-reply-send-mail" checked="checked"> <label>Send mail to reviewers</label> </form> </div> <a id="resizer" class="resizer" style="display:none;cursor:pointer"> <img src="/static/zippyplus.gif"> </a> </td> </tr> </tbody></table> </div> <div class="popup" id="popup-issue" style="left: 104px; top: 116px; visibility: hidden; "> <b>Issue 4571045: New matrix benchmarks to evaluate ::setConcat implementation options </b><br> Created 16 minutes ago by me<br> Modified 0 minutes ago<br> Reviewers: reed1<br> Base URL: http://skia.googlecode.com/svn/trunk/<br> Comments: 0 </div> <p></p> <div style="float: left;"> <a target="_blank" href="http://code.google.com/appengine/"><img border="0" src="/static/appengine-noborder-120x30.gif" alt="Powered by Google App Engine"></a> </div> <div class="extra" style="font-size: 9pt; float: right; text-align: right;"> <div style="height:14px;"> <img src="/static/rss.gif" alt="RSS Feeds" width="14" height="14" align="top"> <a href="/rss/all">Recent Issues</a> | <a href="/rss/mine/TomH">My Issues</a> | <a href="/rss/reviews/TomH">My Reviews</a> | <a href="/rss/closed/TomH">My Closed</a> | <a href="/rss/issue/4571045">This issue</a> </div> <div style="margin-top: .3em;">This is Rietveld <a href="http://code.google.com/p/rietveld/updates/list">r756 </a></div> </div> <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script><script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script> <script type="text/javascript"> var pageTracker = _gat._getTracker("UA-4803694-4"); pageTracker._initData(); pageTracker._trackPageview(); </script> On platforms that use Float (instead of Fixed), SkMatrix stores its internal values as floats, but setConcat() needs extra precision and so uses doubles to contain intermediate values. These three benchmarks compare the speed of float-only, double-only, and float-cast-to-double implementations of a chunk of code extracted from the non-perspective case of setConcat(). git-svn-id: http://skia.googlecode.com/svn/trunk@1497 2bbb7eff-a529-9590-31e7-b0007b416f81
* speed-up SkMatrix::preScale by 3x, by special-casing it instead of just callingGravatar reed@google.com2011-06-01
concat. Inspired by the profile of the fishtank site git-svn-id: http://skia.googlecode.com/svn/trunk@1462 2bbb7eff-a529-9590-31e7-b0007b416f81