| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "Benchmark.h" | 8 #include "Benchmark.h" |
| 9 #include "SkColorPriv.h" | 9 #include "SkColorPriv.h" |
| 10 #include "SkMatrix.h" | 10 #include "SkMatrix.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 const float* SK_RESTRICT src, | 46 const float* SK_RESTRICT src, |
| 47 int count) = 0; | 47 int count) = 0; |
| 48 | 48 |
| 49 protected: | 49 protected: |
| 50 virtual int mulLoopCount() const { return 1; } | 50 virtual int mulLoopCount() const { return 1; } |
| 51 | 51 |
| 52 const char* onGetName() override { | 52 const char* onGetName() override { |
| 53 return fName.c_str(); | 53 return fName.c_str(); |
| 54 } | 54 } |
| 55 | 55 |
| 56 void onDraw(const int loops, SkCanvas*) override { | 56 void onDraw(int loops, SkCanvas*) override { |
| 57 int n = loops * this->mulLoopCount(); | 57 int n = loops * this->mulLoopCount(); |
| 58 for (int i = 0; i < n; i++) { | 58 for (int i = 0; i < n; i++) { |
| 59 this->performTest(fDst, fSrc, kBuffer); | 59 this->performTest(fDst, fSrc, kBuffer); |
| 60 } | 60 } |
| 61 } | 61 } |
| 62 | 62 |
| 63 private: | 63 private: |
| 64 typedef Benchmark INHERITED; | 64 typedef Benchmark INHERITED; |
| 65 }; | 65 }; |
| 66 | 66 |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 fProc = gRec[index].fProc; | 280 fProc = gRec[index].fProc; |
| 281 fName = gRec[index].fName; | 281 fName = gRec[index].fName; |
| 282 } | 282 } |
| 283 } | 283 } |
| 284 | 284 |
| 285 bool isSuitableFor(Backend backend) override { | 285 bool isSuitableFor(Backend backend) override { |
| 286 return backend == kNonRendering_Backend; | 286 return backend == kNonRendering_Backend; |
| 287 } | 287 } |
| 288 | 288 |
| 289 protected: | 289 protected: |
| 290 void onDraw(const int loops, SkCanvas*) override { | 290 void onDraw(int loops, SkCanvas*) override { |
| 291 IsFiniteProc proc = fProc; | 291 IsFiniteProc proc = fProc; |
| 292 const float* data = fData; | 292 const float* data = fData; |
| 293 // do this so the compiler won't throw away the function call | 293 // do this so the compiler won't throw away the function call |
| 294 int counter = 0; | 294 int counter = 0; |
| 295 | 295 |
| 296 if (proc) { | 296 if (proc) { |
| 297 for (int j = 0; j < loops; ++j) { | 297 for (int j = 0; j < loops; ++j) { |
| 298 for (int i = 0; i < N - 4; ++i) { | 298 for (int i = 0; i < N - 4; ++i) { |
| 299 counter += proc(&data[i]); | 299 counter += proc(&data[i]); |
| 300 } | 300 } |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 } | 350 } |
| 351 } | 351 } |
| 352 | 352 |
| 353 bool isSuitableFor(Backend backend) override { | 353 bool isSuitableFor(Backend backend) override { |
| 354 return backend == kNonRendering_Backend; | 354 return backend == kNonRendering_Backend; |
| 355 } | 355 } |
| 356 | 356 |
| 357 virtual void process(float) {} | 357 virtual void process(float) {} |
| 358 | 358 |
| 359 protected: | 359 protected: |
| 360 void onDraw(const int loops, SkCanvas*) override { | 360 void onDraw(int loops, SkCanvas*) override { |
| 361 SkRandom rand; | 361 SkRandom rand; |
| 362 float accum = 0; | 362 float accum = 0; |
| 363 const float* data = fData; | 363 const float* data = fData; |
| 364 | 364 |
| 365 if (fFast) { | 365 if (fFast) { |
| 366 for (int j = 0; j < loops; ++j) { | 366 for (int j = 0; j < loops; ++j) { |
| 367 for (int i = 0; i < ARRAY; ++i) { | 367 for (int i = 0; i < ARRAY; ++i) { |
| 368 accum += fast_floor(data[i]); | 368 accum += fast_floor(data[i]); |
| 369 } | 369 } |
| 370 this->process(accum); | 370 this->process(accum); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 } | 412 } |
| 413 | 413 |
| 414 bool isSuitableFor(Backend backend) override { | 414 bool isSuitableFor(Backend backend) override { |
| 415 return backend == kNonRendering_Backend; | 415 return backend == kNonRendering_Backend; |
| 416 } | 416 } |
| 417 | 417 |
| 418 // just so the compiler doesn't remove our loops | 418 // just so the compiler doesn't remove our loops |
| 419 virtual void process(int) {} | 419 virtual void process(int) {} |
| 420 | 420 |
| 421 protected: | 421 protected: |
| 422 void onDraw(const int loops, SkCanvas*) override { | 422 void onDraw(int loops, SkCanvas*) override { |
| 423 int accum = 0; | 423 int accum = 0; |
| 424 | 424 |
| 425 if (fUsePortable) { | 425 if (fUsePortable) { |
| 426 for (int j = 0; j < loops; ++j) { | 426 for (int j = 0; j < loops; ++j) { |
| 427 for (int i = 0; i < ARRAY; ++i) { | 427 for (int i = 0; i < ARRAY; ++i) { |
| 428 accum += SkCLZ_portable(fData[i]); | 428 accum += SkCLZ_portable(fData[i]); |
| 429 } | 429 } |
| 430 this->process(accum); | 430 this->process(accum); |
| 431 } | 431 } |
| 432 } else { | 432 } else { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 } | 468 } |
| 469 | 469 |
| 470 bool isSuitableFor(Backend backend) override { | 470 bool isSuitableFor(Backend backend) override { |
| 471 return backend == kNonRendering_Backend; | 471 return backend == kNonRendering_Backend; |
| 472 } | 472 } |
| 473 | 473 |
| 474 // just so the compiler doesn't remove our loops | 474 // just so the compiler doesn't remove our loops |
| 475 virtual void process(int) {} | 475 virtual void process(int) {} |
| 476 | 476 |
| 477 protected: | 477 protected: |
| 478 void onDraw(const int loops, SkCanvas*) override { | 478 void onDraw(int loops, SkCanvas*) override { |
| 479 int accum = 0; | 479 int accum = 0; |
| 480 | 480 |
| 481 for (int j = 0; j < loops; ++j) { | 481 for (int j = 0; j < loops; ++j) { |
| 482 for (int i = 0; i < ARRAY; ++i) { | 482 for (int i = 0; i < ARRAY; ++i) { |
| 483 accum += fVec[i].normalize(); | 483 accum += fVec[i].normalize(); |
| 484 } | 484 } |
| 485 this->process(accum); | 485 this->process(accum); |
| 486 } | 486 } |
| 487 } | 487 } |
| 488 | 488 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 512 fData[i] = rand.nextSScalar1(); | 512 fData[i] = rand.nextSScalar1(); |
| 513 } | 513 } |
| 514 | 514 |
| 515 } | 515 } |
| 516 | 516 |
| 517 bool isSuitableFor(Backend backend) override { | 517 bool isSuitableFor(Backend backend) override { |
| 518 return backend == kNonRendering_Backend; | 518 return backend == kNonRendering_Backend; |
| 519 } | 519 } |
| 520 | 520 |
| 521 protected: | 521 protected: |
| 522 void onDraw(const int loops, SkCanvas*) override { | 522 void onDraw(int loops, SkCanvas*) override { |
| 523 for (int j = 0; j < loops; ++j) { | 523 for (int j = 0; j < loops; ++j) { |
| 524 for (int i = 0; i < N - 4; ++i) { | 524 for (int i = 0; i < N - 4; ++i) { |
| 525 fResult[i] = SkFloatToFixed(fData[i]); | 525 fResult[i] = SkFloatToFixed(fData[i]); |
| 526 } | 526 } |
| 527 } | 527 } |
| 528 | 528 |
| 529 SkPaint paint; | 529 SkPaint paint; |
| 530 if (paint.getAlpha() == 0) { | 530 if (paint.getAlpha() == 0) { |
| 531 SkDebugf("%d\n", fResult[0]); | 531 SkDebugf("%d\n", fResult[0]); |
| 532 } | 532 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 552 | 552 |
| 553 bool isSuitableFor(Backend backend) override { | 553 bool isSuitableFor(Backend backend) override { |
| 554 return backend == kNonRendering_Backend; | 554 return backend == kNonRendering_Backend; |
| 555 } | 555 } |
| 556 | 556 |
| 557 protected: | 557 protected: |
| 558 const char* onGetName() override { | 558 const char* onGetName() override { |
| 559 return fName.c_str(); | 559 return fName.c_str(); |
| 560 } | 560 } |
| 561 | 561 |
| 562 void onDraw(const int loops, SkCanvas*) override { | 562 void onDraw(int loops, SkCanvas*) override { |
| 563 volatile T a = 0, b = 0; | 563 volatile T a = 0, b = 0; |
| 564 T div = 0, mod = 0; | 564 T div = 0, mod = 0; |
| 565 for (int i = 0; i < loops; i++) { | 565 for (int i = 0; i < loops; i++) { |
| 566 if ((T)i == 0) continue; // Small T will wrap around. | 566 if ((T)i == 0) continue; // Small T will wrap around. |
| 567 SkTDivMod((T)(i+1), (T)i, &div, &mod); | 567 SkTDivMod((T)(i+1), (T)i, &div, &mod); |
| 568 a ^= div; | 568 a ^= div; |
| 569 b ^= mod; | 569 b ^= mod; |
| 570 } | 570 } |
| 571 } | 571 } |
| 572 }; | 572 }; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 599 | 599 |
| 600 DEF_BENCH( return new FloorBench(false); ) | 600 DEF_BENCH( return new FloorBench(false); ) |
| 601 DEF_BENCH( return new FloorBench(true); ) | 601 DEF_BENCH( return new FloorBench(true); ) |
| 602 | 602 |
| 603 DEF_BENCH( return new CLZBench(false); ) | 603 DEF_BENCH( return new CLZBench(false); ) |
| 604 DEF_BENCH( return new CLZBench(true); ) | 604 DEF_BENCH( return new CLZBench(true); ) |
| 605 | 605 |
| 606 DEF_BENCH( return new NormalizeBench(); ) | 606 DEF_BENCH( return new NormalizeBench(); ) |
| 607 | 607 |
| 608 DEF_BENCH( return new FixedMathBench(); ) | 608 DEF_BENCH( return new FixedMathBench(); ) |
| OLD | NEW |