Skip to content

Instantly share code, notes, and snippets.

@totalgee
Last active February 24, 2022 12:09
Show Gist options
  • Select an option

  • Save totalgee/640805cb8995cf588152 to your computer and use it in GitHub Desktop.

Select an option

Save totalgee/640805cb8995cf588152 to your computer and use it in GitHub Desktop.
Performance comparison of ChaiScript w/ several other scripting languages
////////////////////////////////////////////////////////////
// ChaiScript:
//
// getTimeInSeconds() is implemented in C++ as follows:
//
// double getTimeInSeconds()
// {
// using namespace std::chrono;
// static time_point<high_resolution_clock> start = high_resolution_clock::now();
//
// duration<double> elapsed_seconds = high_resolution_clock::now() - start;
// return elapsed_seconds.count();
// }
//
// It is exposed as follows:
//
// mChai.add(chaiscript::fun(&getTimeInSeconds), "getTimeInSeconds");
var sum = 0.0
var start = getTimeInSeconds()
for (var i = 1; i <= 100000; ++i) {
if (i % 2 == 0) {
sum += 1.0 / i;
}
else {
sum += 1.0 / (double(i) * i);
}
}
var end = getTimeInSeconds()
print("Elapsed time: " + to_string(end - start) + " sum: " + to_string(sum))
//
// ChaiScript post-v5.6.0 (8fc61bf) Release (measured April 30, 2015 on Mac Pro: 3,7 GHz Quad-Core Intel Xeon E5):
// Elapsed time: 0.494943 sum: 6.9322
////////////////////////////////////////////////////////////
// SuperCollider:
(
var sum = 0.0;
var dur;
dur = {
(1..100000).do { arg i;
if (i % 2 == 0) {
sum = sum + (1.0 / i);
} {
sum = sum + (1.0 / (i * i));
}
};
}.bench(false);
"Elapsed time: % sum: %".format(dur.round(1e-6), sum.round(1e-4)).postln;
""
)
//
// SuperCollider v3.6.6 (measured April 30, 2015 on Mac Pro: 3,7 GHz Quad-Core Intel Xeon E5):
// Elapsed time: 0.013837 sum: 6.9322
////////////////////////////////////////////////////////////
// Python:
from timeit import default_timer as timer
sum = 0.0
start = timer()
for i in xrange(1, 100001):
if i % 2 == 0:
sum += 1.0 / float(i)
else:
sum += 1.0 / (float(i) * i)
end = timer()
print "Elapsed time: {:.6f} sum: {:.4f}".format(end - start, sum)
//
// Python v2.7.6 (measured April 30, 2015 on Mac Pro: 3,7 GHz Quad-Core Intel Xeon E5):
// Elapsed time: 0.041317 sum: 6.9322
////////////////////////////////////////////////////////////
// Lua:
sum = 0.0
startTime = os.clock()
for i = 1, 100000 do
if i % 2 == 0 then
sum = sum + (1.0 / i)
else
sum = sum + (1.0 / (i * i))
end
end
endTime = os.clock()
print(string.format("Elapsed time: %.6f sum: %.4f", endTime-startTime, sum))
//
// Lua v5.3.0 (measured April 30, 2015 on Mac Pro: 3,7 GHz Quad-Core Intel Xeon E5):
// Elapsed time: 0.009793 sum: 6.9322
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment