Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1794)

Unified Diff: bench/nanobench.cpp

Issue 918673002: Adding new benchmark to test image decoding performance. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Image decode benchmarking code (revision 2) Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: bench/nanobench.cpp
diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp
index eb48ec228d6b35886d6c8a87cd5e1c344f9479e3..f2b8d699f944c5f5e078c9b1c253a1a7dda80a62 100644
--- a/bench/nanobench.cpp
+++ b/bench/nanobench.cpp
@@ -9,10 +9,12 @@
#include "Benchmark.h"
#include "CrashHandler.h"
+#include "DecodingBench.h"
#include "GMBench.h"
#include "ProcStats.h"
#include "ResultsWriter.h"
#include "RecordingBench.h"
+#include "Resources.h"
#include "SKPBench.h"
#include "Stats.h"
#include "Timer.h"
@@ -29,6 +31,8 @@
#include "SkSurface.h"
#include "SkTaskGroup.h"
+#include <stdio.h>
+
msarett 2015/02/11 21:57:01 I will remove this. I was using it to debug and i
mtklein 2015/02/12 00:29:34 One day you will find yourself typing SkDebugf acc
msarett 2015/02/12 18:52:56 :)
#if SK_SUPPORT_GPU
#include "gl/GrGLDefines.h"
#include "GrContextFactory.h"
@@ -439,7 +443,9 @@ public:
, fCurrentRecording(0)
, fCurrentScale(0)
, fCurrentSKP(0)
- , fCurrentUseMPD(0) {
+ , fCurrentUseMPD(0)
+ , fCurrentImage(0)
+ , fCurrentColorType(0) {
for (int i = 0; i < FLAGS_skps.count(); i++) {
if (SkStrEndsWith(FLAGS_skps[i], ".skp")) {
fSKPs.push_back() = FLAGS_skps[i];
@@ -469,6 +475,28 @@ public:
if (FLAGS_mpd) {
fUseMPDs.push_back() = true;
}
+
+ // Prepare the images for decoding
+ for (int i = 0; i < FLAGS_images.count(); i++) {
+ const char* flag = FLAGS_images[i];
+ // If the value passed in is a directory, add all the images
+ if (sk_isdir(flag)) {
+ SkOSFile::Iter it(flag);
+ SkString file;
+ while (it.next(&file)) {
+ fImages.push_back() = SkOSPath::Join(flag, file.c_str());
+ }
+ }
+ // Also add the value if it is a single image
+ else if (sk_exists(flag)) {
scroggo 2015/02/12 14:19:02 This should go on the same line as the closing bra
msarett 2015/02/12 18:52:56 Done.
+ fImages.push_back() = flag;
+ }
+ }
+
+ // Choose the candidate color types for image decoding
+ SkColorType colorTypes[] =
+ { kN32_SkColorType, kRGB_565_SkColorType, kAlpha_8_SkColorType };
_cary 2015/02/12 15:18:05 make this const
msarett 2015/02/12 18:52:56 Done.
+ fColorTypes.push_back_n(SK_ARRAY_COUNT(colorTypes), colorTypes);
}
static bool ReadPicture(const char* path, SkAutoTUnref<SkPicture>* pic) {
@@ -562,6 +590,24 @@ public:
fCurrentScale++;
}
+ // Run the DecodingBenches
+ SkString file;
+ while (fCurrentImage < fImages.count()) {
+ while (fCurrentColorType < fColorTypes.count()) {
+ SkString path = fImages[fCurrentImage];
_cary 2015/02/12 15:18:05 const SkString& path
msarett 2015/02/12 18:52:56 Done.
+ SkColorType colorType = fColorTypes[fCurrentColorType];
+ fCurrentColorType++;
+ // Check if the image decodes before creating the benchmark
+ SkBitmap bitmap;
+ if (SkImageDecoder::DecodeFile(path.c_str(), &bitmap,
+ colorType, SkImageDecoder::kDecodePixels_Mode)) {
+ return SkNEW_ARGS(DecodingBench, (path, colorType));
+ }
+ }
+ fCurrentColorType = 0;
+ fCurrentImage++;
+ }
+
return NULL;
}
@@ -591,6 +637,8 @@ private:
SkTArray<SkScalar> fScales;
SkTArray<SkString> fSKPs;
SkTArray<bool> fUseMPDs;
+ SkTArray<SkString> fImages;
+ SkTArray<SkColorType> fColorTypes;
double fSKPBytes, fSKPOps;
@@ -600,6 +648,8 @@ private:
int fCurrentScale;
int fCurrentSKP;
int fCurrentUseMPD;
+ int fCurrentImage;
+ int fCurrentColorType;
};
int nanobench_main();

Powered by Google App Engine
This is Rietveld 408576698