updating benchmarks
on the new machine, consistent not rubyx yet
This commit is contained in:
parent
861fa3203f
commit
00bf38a0e6
@ -17,11 +17,10 @@ int fibo(int n){
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
int counter = 100352 - 352;
|
int counter = 100000;
|
||||||
int counter2 = counter;
|
|
||||||
int level = 40;
|
|
||||||
int fib ;
|
int fib ;
|
||||||
while(counter--) {
|
while(counter) {
|
||||||
fib = fibo(level);
|
fib += fibo(20);
|
||||||
|
counter -= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,10 +10,9 @@ int fibo_r(int n)
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
int counter = 1000;
|
int counter = 100000;
|
||||||
int counter2 = counter;
|
|
||||||
int fib ;
|
int fib ;
|
||||||
while(counter--) {
|
while(counter--) {
|
||||||
fib = fibo_r(20);
|
fib += fibo_r(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,7 @@
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
setbuf(stdout, NULL); /* to make it equivalent to the typed version, otherwise it caches */
|
int counter = 100000;
|
||||||
int counter = 100352 - 352;
|
|
||||||
while(counter--) {
|
while(counter--) {
|
||||||
printf("Hello there\n");
|
printf("Hello there\n");
|
||||||
}
|
}
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
char stringa[20] ;
|
char stringa[20] ;
|
||||||
|
int counter = 1000;
|
||||||
int counter = 100352 - 352;
|
|
||||||
while(counter--) {
|
while(counter--) {
|
||||||
sprintf(stringa, "%i\n" , counter);
|
sprintf(stringa, "%i\n" , counter);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
#include<stdio.h>
|
|
||||||
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
int counter = 100352 - 352;
|
|
||||||
while(counter) {
|
|
||||||
counter = counter - 1;
|
|
||||||
}
|
|
||||||
}
|
|
5
test/bench/c/noop.c
Normal file
5
test/bench/c/noop.c
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
@ -20,6 +20,6 @@ func main() {
|
|||||||
sum := 1
|
sum := 1
|
||||||
for sum < 100000 {
|
for sum < 100000 {
|
||||||
sum += 1
|
sum += 1
|
||||||
fibo( 40 )
|
fibo( 20 )
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -10,8 +10,8 @@ func fib(n uint) uint {
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
sum := 1
|
sum := 1
|
||||||
for sum < 1000 {
|
for sum < 100000 {
|
||||||
sum += 1
|
sum += 1
|
||||||
fib( 20 )
|
fib( 10 )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
5
test/bench/go/noop.go
Normal file
5
test/bench/go/noop.go
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
return
|
||||||
|
}
|
@ -1,36 +1,28 @@
|
|||||||
# Benchmarks
|
# Benchmarks
|
||||||
|
|
||||||
loop - program does empty loop of same size as hello
|
hello - output hello world to measure kernel calls
|
||||||
hello - output hello world (to dev/null) to measure kernel calls (not terminal speed)
|
add - run integer adds by linear fibonacci of 20
|
||||||
itos - convert integers from 1 to 100000 to string
|
call - exercise calling by recursive fibonacci of 10
|
||||||
add - run integer adds by linear fibonacci of 40
|
noop - a baseline that does nothing
|
||||||
call - exercise calling by recursive fibonacci of 20
|
|
||||||
|
|
||||||
Hello and puti and add run 100_000 iterations per program invocation to remove startup overhead.
|
All programs (apart from noop) run 1M times to minimize startup impact.
|
||||||
Call only has 10000 iterations, as it much slower
|
|
||||||
|
|
||||||
Gcc used to compile c on the machine
|
|
||||||
typed produced by ruby (on another machine)
|
|
||||||
|
|
||||||
|
C was linked statically as dynamic linked influences times. Output was sent to /dev/null, so as
|
||||||
|
to measure the calling and not the terminal.
|
||||||
# Results
|
# Results
|
||||||
|
|
||||||
Results were measured by a ruby script. Mean and variance was measured until variance was low,
|
Results were measured by a ruby script. Mean and variance was measured until variance was low,
|
||||||
always under one percent.
|
always under one percent. Noop showed that program startup is a factor, so all programs loop to 1M.
|
||||||
|
|
||||||
The machine was a virtual arm run on a powerbook, performance roughly equivalent to a raspberry pi.
|
The machine was a virtual arm (qemu) run on a acer swift 5 (i5 8265 3.9GHz), performance roughly equivalent to a raspberry pi.
|
||||||
But results should be seen as relative, not absolute.
|
But results (in ms) should be seen as relative, not absolute.
|
||||||
|
|
||||||
|
|
||||||
language | loop | hello | itos | add | call
|
language | noop | hello | add | call
|
||||||
c | 0,0500 | 2,1365 | 0,2902 | 0,1245 | 0,8535
|
c | 45 | 100 | 72 | 591
|
||||||
go | 0.0485 | 4.5355 | 0.2143 | 0.0825 | 0.8769
|
go | 53 | 4060 | 64 | 624
|
||||||
typed | 0,0374 | 1,2071 | 0,7263 | 0,2247 | 1,3625
|
rubyx | 0,0374 | 1,2071 | 0,2247 | 1,3625
|
||||||
|
|
||||||
ruby | 0,3 | 8.882 | 0,8971 | 3,8452
|
ruby | 1830 | 2750 | 3000 | 1900_000
|
||||||
|
|
||||||
2c | - 33 % | - 79 % | + 150% | + 80 % | + 60 %
|
|
||||||
|
|
||||||
2r | x 10 | x 6 | + 23% | x 17 | x 26
|
|
||||||
|
|
||||||
Comparison with ruby, not really for speed, just to see how much leeway there is for our next layer.
|
Comparison with ruby, not really for speed, just to see how much leeway there is for our next layer.
|
||||||
Ruby startup time is 1,5695 seconds, which we'll subtract from the benches
|
|
||||||
|
@ -14,6 +14,6 @@ end
|
|||||||
counter = 100000
|
counter = 100000
|
||||||
|
|
||||||
while(counter > 0) do
|
while(counter > 0) do
|
||||||
fibo(40)
|
fibo(20)
|
||||||
counter -= 1
|
counter -= 1
|
||||||
end
|
end
|
||||||
|
@ -8,9 +8,9 @@ def fibo_r( n )
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
counter = 1000
|
counter = 100
|
||||||
|
|
||||||
while(counter > 0) do
|
while(counter > 0) do
|
||||||
fibo_r(20)
|
fibo_r(10)
|
||||||
counter -= 1
|
counter -= 1
|
||||||
end
|
end
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
|
|
||||||
counter = 100352 - 352;
|
counter = 100000;
|
||||||
while(counter > 0) do
|
while(counter > 0) do
|
||||||
puts "Hello there"
|
puts "Hello there"
|
||||||
STDOUT.flush
|
|
||||||
counter = counter - 1
|
counter = counter - 1
|
||||||
end
|
end
|
||||||
|
1
test/bench/ruby/noop.rb
Normal file
1
test/bench/ruby/noop.rb
Normal file
@ -0,0 +1 @@
|
|||||||
|
return 0
|
@ -1,6 +1,6 @@
|
|||||||
class Space
|
class Space
|
||||||
def main(arg)
|
def main(arg)
|
||||||
n = 6
|
n = 10
|
||||||
a = 0
|
a = 0
|
||||||
b = 1
|
b = 1
|
||||||
i = 1
|
i = 1
|
||||||
@ -13,3 +13,4 @@ class Space
|
|||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
#Space.new.main(1)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
class Space
|
class Space
|
||||||
def main(arg)
|
def main(arg)
|
||||||
return "Hello-there".putstring
|
return "Hello-there\n".putstring
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -11,6 +11,6 @@ class Space
|
|||||||
end
|
end
|
||||||
|
|
||||||
def main(arg)
|
def main(arg)
|
||||||
return fibo_r(5)
|
return fibo_r(10)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user