diff --git a/src/main.cpp b/src/main.cpp index fcb41d5..3a72df1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -249,13 +249,11 @@ void interactive(chaiscript::ChaiScript& chai) } } -double getTimeInSeconds() +double now() { using namespace std::chrono; - static time_point start = high_resolution_clock::now(); - - duration elapsed_seconds = high_resolution_clock::now() - start; - return elapsed_seconds.count(); + auto now = high_resolution_clock::now(); + return duration_cast>(now.time_since_epoch()).count(); } int main(int argc, char *argv[]) @@ -297,7 +295,7 @@ int main(int argc, char *argv[]) chai.add(chaiscript::fun(&help), "help"); chai.add(chaiscript::fun(&throws_exception), "throws_exception"); chai.add(chaiscript::fun(&get_eval_error), "get_eval_error"); - chai.add(chaiscript::fun(&getTimeInSeconds), "getTimeInSeconds"); + chai.add(chaiscript::fun(&now), "now"); for (int i = 0; i < argc; ++i) { diff --git a/unittests/performance.chai b/unittests/performance.chai new file mode 100644 index 0000000..1345c74 --- /dev/null +++ b/unittests/performance.chai @@ -0,0 +1,13 @@ +var sum = 0.0 +var start = now() +for (var i = 1; i <= 100000; ++i) { + if (i % 2 == 0) { + sum += 1.0 / i; + } + else { + sum += 1.0 / (double(i) * i); + } +} +var end = now() +print("Elapsed time: " + to_string(end - start) + " sum: " + to_string(sum)) +assert_equal(to_string(sum), "6.9322")