🐛 fix dynamic arguments load bug in nasal_vm

This commit is contained in:
ValKmjolnir
2022-12-09 00:56:53 +08:00
parent 39faa33b4e
commit 9d33fafb81
6 changed files with 63 additions and 77 deletions
-7
View File
@@ -1,13 +1,6 @@
import.stl.sort;
import.stl.process_bar;
for(var i=0;i<1954;i+=1){
runtime.gc.extend("str");
}
for(var i=0;i<3907;i+=1){
runtime.gc.extend("vec");
}
var test=func(n){
var ts=maketimestamp();
var bar=process_bar.high_resolution_bar(40);
-4
View File
@@ -1,9 +1,5 @@
import.module.libsock;
for(var i=0;i<60;i+=1){
runtime.gc.extend("str");
}
var http=func(){
var sd=nil;
return {
+16 -13
View File
@@ -39,14 +39,14 @@ libfib.open();
libfib.open();
var tm=maketimestamp();
tm.stamp();
println("[result] ",libfib.fib(40));
println("[result] ",libfib.fib(35));
println("[time ] ",tm.elapsedMSec()," ms");
tm.stamp();
println("[result] ",libfib.qfib(40));
println("[result] ",libfib.qfib(35));
println("[time ] ",tm.elapsedMSec()," ms");
libfib.close();
println("[result] ",libfib.fib(40));
println("[result] ",libfib.qfib(40));
println("[result] ",libfib.fib(35));
println("[result] ",libfib.qfib(35));
libfib.close();
var speed_test=func(){
@@ -56,19 +56,22 @@ var speed_test=func(){
var vec_call=dylib.dlcall;
var invoke=dylib.limitcall(1);
var tm=maketimestamp();
var duration=0;
for(var t=0;t<10;t+=1){
var cnt=0;
tm.stamp();
for(var i=0;i<5e6;i+=1)
invoke(fd,40);
duration=tm.elapsedMSec();
println("[time ] limited call: ",duration," ms avg ",5e6/duration," call/ms");
while(tm.elapsedMSec()<50){
invoke(fd,35);
cnt+=1;
}
println("[time ] limited call: ",int(cnt/tm.elapsedMSec())," call/ms");
cnt=0;
tm.stamp();
for(var i=0;i<5e6;i+=1)
vec_call(fd,40);
duration=tm.elapsedMSec();
println("[time ] dynamic call: ",duration," ms avg ",5e6/duration," call/ms");
while(tm.elapsedMSec()<50){
vec_call(fd,35);
cnt+=1;
}
println("[time ] dynamic call: ",int(cnt/tm.elapsedMSec())," call/ms");
}
}
+23 -21
View File
@@ -61,37 +61,39 @@ func(){
var f2=func(){var a=1;return a+1;}
var f3=func(){var (a,b)=(1,1);return a+b+1;}
tm.stamp();
for(var i=0;i<1e7;i+=1);
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
for(var i=0;i<1e6;i+=1);
duration=tm.elapsedMSec();
println(str(int(1e6/duration))," calc/ms");
tm.stamp();
for(var i=0;i<1e7;i+=1)f1();
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
for(var i=0;i<1e6;i+=1)f1();
duration=tm.elapsedMSec();
println(str(int(1e6/duration))," calc/ms");
tm.stamp();
for(var i=0;i<1e7;i+=1)func{}();
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
for(var i=0;i<1e6;i+=1)func{}();
duration=tm.elapsedMSec();
println(str(int(1e6/duration))," calc/ms");
tm.stamp();
for(var i=0;i<1e7;i+=1)f2();
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
for(var i=0;i<1e7;i+=1)
for(var i=0;i<1e6;i+=1)f2();
duration=tm.elapsedMSec();
println(str(int(1e6/duration))," calc/ms");
tm.stamp();
for(var i=0;i<1e6;i+=1)
func{
var a=1;
return a+1;
}();
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
duration=tm.elapsedMSec();
println(str(int(1e6/duration))," calc/ms");
tm.stamp();
for(var i=0;i<1e7;i+=1)f3();
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
for(var i=0;i<1e7;i+=1)
for(var i=0;i<1e6;i+=1)f3();
duration=tm.elapsedMSec();
println(str(int(1e6/duration))," calc/ms");
tm.stamp();
for(var i=0;i<1e6;i+=1)
func{
var (a,b)=(1,1);
return a+b+1;
}();
duration=tm.elapsedMSec()/1e3;
println("total ",duration," sec, ",str(int(1e7/duration/1e6))," M calc/sec");
duration=tm.elapsedMSec();
println(str(int(1e6/duration))," calc/ms");
}();