From 353e2565d5867f457c03e5e011b5e13a2254b96f Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Fri, 24 Sep 2010 11:21:17 +0200 Subject: [PATCH] Fix timing on I/O benchmark --- benchmark/function_call/bench.js | 6 ++++-- benchmark/function_call/binding.cc | 6 ++++-- benchmark/io.c | 25 ++++++++++++++----------- benchmark/io.js | 4 ++++ 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/benchmark/function_call/bench.js b/benchmark/function_call/bench.js index 39f76caebc..f195842ca3 100644 --- a/benchmark/function_call/bench.js +++ b/benchmark/function_call/bench.js @@ -1,12 +1,14 @@ var binding = require('./build/default/binding'); +c = 0 + function js() { - return (new Date()).getTime(); + return c++; //(new Date()).getTime(); } var cxx = binding.hello; -var i, N = 10000000; +var i, N = 100000000; console.log(js()); console.log(cxx()); diff --git a/benchmark/function_call/binding.cc b/benchmark/function_call/binding.cc index e33d5900cb..75882c1ef8 100644 --- a/benchmark/function_call/binding.cc +++ b/benchmark/function_call/binding.cc @@ -4,10 +4,12 @@ using namespace v8; +static int c = 0; + static Handle Hello(const Arguments& args) { HandleScope scope; - time_t tv = time(NULL); - return scope.Close(Integer::New(tv)); + //time_t tv = time(NULL); + return scope.Close(Integer::New(c++)); } extern "C" void init (Handle target) { diff --git a/benchmark/io.c b/benchmark/io.c index 068d50ee1b..db3f04c107 100644 --- a/benchmark/io.c +++ b/benchmark/io.c @@ -5,13 +5,15 @@ #include #include #include -#include +#include +#include #include #include int tsize = 1000 * 1048576; const char *path = "/tmp/wt.dat"; +int c = 0; char* bufit(size_t l) { @@ -24,7 +26,7 @@ void writetest(int size, size_t bsize) { int i; char *buf = bufit(bsize); - clock_t start, end; + struct timeval start, end; double elapsed; double mbps; @@ -34,9 +36,10 @@ void writetest(int size, size_t bsize) exit(254); } - start = clock(); + assert(0 == gettimeofday(&start, NULL)); for (i = 0; i < size; i += bsize) { int rv = write(fd, buf, bsize); + if (c++ % 2000 == 0) fprintf(stderr, "."); if (rv < 0) { perror("write failed"); exit(254); @@ -48,10 +51,10 @@ void writetest(int size, size_t bsize) fsync(fd); #endif close(fd); - end = clock(); - elapsed = ((double) (end - start)) / CLOCKS_PER_SEC; + assert(0 == gettimeofday(&end, NULL)); + elapsed = (end.tv_sec - start.tv_sec) + ((double)(end.tv_usec - start.tv_usec))/100000.; mbps = ((tsize/elapsed)) / 1048576; - fprintf(stderr, "Wrote %d bytes in %03fs using %d byte buffers: %03fmB/s\n", size, elapsed, bsize, mbps); + fprintf(stderr, "\nWrote %d bytes in %03fs using %ld byte buffers: %03fmB/s\n", size, elapsed, bsize, mbps); free(buf); } @@ -60,7 +63,7 @@ void readtest(int size, size_t bsize) { int i; char *buf = bufit(bsize); - clock_t start, end; + struct timeval start, end; double elapsed; double mbps; @@ -70,7 +73,7 @@ void readtest(int size, size_t bsize) exit(254); } - start = clock(); + assert(0 == gettimeofday(&start, NULL)); for (i = 0; i < size; i += bsize) { int rv = read(fd, buf, bsize); if (rv < 0) { @@ -79,10 +82,10 @@ void readtest(int size, size_t bsize) } } close(fd); - end = clock(); - elapsed = ((double) (end - start)) / CLOCKS_PER_SEC; + assert(0 == gettimeofday(&end, NULL)); + elapsed = (end.tv_sec - start.tv_sec) + ((double)(end.tv_usec - start.tv_usec))/100000.; mbps = ((tsize/elapsed)) / 1048576; - fprintf(stderr, "Read %d bytes in %03fs using %d byte buffers: %03fmB/s\n", size, elapsed, bsize, mbps); + fprintf(stderr, "Read %d bytes in %03fs using %ld byte buffers: %03fmB/s\n", size, elapsed, bsize, mbps); free(buf); } diff --git a/benchmark/io.js b/benchmark/io.js index 060f3cd2a3..a91bdbbe67 100644 --- a/benchmark/io.js +++ b/benchmark/io.js @@ -1,4 +1,5 @@ var fs = require('fs'); +var sys = require('sys'); var Buffer = require('buffer').Buffer; var path = "/tmp/wt.dat"; @@ -21,6 +22,8 @@ function once(emitter, name, cb) { emitter.addListener(name, incb); } +c = 0 + function writetest(size, bsize) { var s = fs.createWriteStream(path, {'flags': 'w', 'mode': 0644}); var remaining = size; @@ -40,6 +43,7 @@ function writetest(size, bsize) { s.on('drain', function () { dowrite(); + if (c++ % 2000 == 0) sys.print("."); }); dowrite();