🚀 use ftime to calculate run time
This commit is contained in:
parent
04ab09586b
commit
7ec8418740
8
lib.nas
8
lib.nas
|
@ -267,14 +267,6 @@ var assert=func(condition,message="assertion failed!"){
|
||||||
die(message);
|
die(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
# settimer alows infinite loop running a function with a time interval
|
|
||||||
var settimer=func(f,interval,realtime=1){
|
|
||||||
while(1){
|
|
||||||
unix.sleep(interval);
|
|
||||||
f();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# get time stamp, this will return a timestamp object
|
# get time stamp, this will return a timestamp object
|
||||||
var maketimestamp=func(){
|
var maketimestamp=func(){
|
||||||
var t=0;
|
var t=0;
|
||||||
|
|
6
main.cpp
6
main.cpp
|
@ -107,9 +107,11 @@ void execute(const std::string& file,const uint32_t cmd)
|
||||||
}
|
}
|
||||||
else if(cmd&VM_EXECTIME)
|
else if(cmd&VM_EXECTIME)
|
||||||
{
|
{
|
||||||
clock_t t=clock();
|
timeb begin,end;
|
||||||
|
ftime(&begin);
|
||||||
vm.run(gen,linker,cmd&VM_OPCALLNUM,cmd&VM_DBGINFO);
|
vm.run(gen,linker,cmd&VM_OPCALLNUM,cmd&VM_DBGINFO);
|
||||||
std::cout<<"process exited after "<<((double)(clock()-t))/CLOCKS_PER_SEC<<"s.\n";
|
ftime(&end);
|
||||||
|
std::cout<<"process exited after "<<((end.time-begin.time)*1.0+end.millitm/1000.0-begin.millitm/1000.0)<<"s.\n";
|
||||||
}
|
}
|
||||||
else if(cmd&VM_EXEC)
|
else if(cmd&VM_EXEC)
|
||||||
vm.run(gen,linker,cmd&VM_OPCALLNUM,cmd&VM_DBGINFO);
|
vm.run(gen,linker,cmd&VM_OPCALLNUM,cmd&VM_DBGINFO);
|
||||||
|
|
|
@ -22,7 +22,6 @@ var add_event=func(name,interval,function){
|
||||||
timestamp.stamp();
|
timestamp.stamp();
|
||||||
while(timestamp.elapsedMSec()<interval*1000)
|
while(timestamp.elapsedMSec()<interval*1000)
|
||||||
coroutine.yield();
|
coroutine.yield();
|
||||||
timestamp.stamp();
|
|
||||||
println("[\e[32m",name,"\e[0m] type:\e[33mevent\e[0m interval:\e[34m",interval,"\e[0m");
|
println("[\e[32m",name,"\e[0m] type:\e[33mevent\e[0m interval:\e[34m",interval,"\e[0m");
|
||||||
function();
|
function();
|
||||||
});
|
});
|
||||||
|
@ -38,7 +37,6 @@ var add_task=func(name,interval,function){
|
||||||
timestamp.stamp();
|
timestamp.stamp();
|
||||||
while(timestamp.elapsedMSec()<interval*1000)
|
while(timestamp.elapsedMSec()<interval*1000)
|
||||||
coroutine.yield();
|
coroutine.yield();
|
||||||
timestamp.stamp();
|
|
||||||
println("[\e[32m",name,"\e[0m] type:\e[34mtask\e[0m interval:\e[34m",interval,"\e[0m invoke-time:\e[96m",counter,"\e[0m");
|
println("[\e[32m",name,"\e[0m] type:\e[34mtask\e[0m interval:\e[34m",interval,"\e[0m invoke-time:\e[96m",counter,"\e[0m");
|
||||||
function();
|
function();
|
||||||
coroutine.yield();
|
coroutine.yield();
|
||||||
|
@ -91,12 +89,24 @@ var maketimer=func(interval,function){
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
println("[\e[32m settimer \e[0m] new func settimer(function,interval,rt)");
|
||||||
|
var settimer=func(){
|
||||||
|
var index=0;
|
||||||
|
return func(function,interval,realtime=1){
|
||||||
|
var name="nasal-settimer-"~index;
|
||||||
|
index+=1;
|
||||||
|
add_task(name,interval,function);
|
||||||
|
}
|
||||||
|
}();
|
||||||
|
|
||||||
println("[\e[32m maketimer \e[0m] test func simulation()");
|
println("[\e[32m maketimer \e[0m] test func simulation()");
|
||||||
var simulation=func(){
|
var simulation=func(){
|
||||||
var running=1;
|
var running=1;
|
||||||
while(running){
|
while(running){
|
||||||
running=0;
|
running=0;
|
||||||
foreach(var i;keys(fg_globals.task)){
|
foreach(var i;keys(fg_globals.task)){
|
||||||
|
if(!contains(fg_globals.task,i))
|
||||||
|
continue;
|
||||||
if(coroutine.resume(fg_globals.task[i])!=nil){
|
if(coroutine.resume(fg_globals.task[i])!=nil){
|
||||||
running=1;
|
running=1;
|
||||||
}else{
|
}else{
|
||||||
|
@ -104,6 +114,8 @@ var simulation=func(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach(var i;keys(fg_globals.event)){
|
foreach(var i;keys(fg_globals.event)){
|
||||||
|
if(!contains(fg_globals.event,i))
|
||||||
|
continue;
|
||||||
if(coroutine.resume(fg_globals.event[i])!=nil){
|
if(coroutine.resume(fg_globals.event[i])!=nil){
|
||||||
running=1;
|
running=1;
|
||||||
}else{
|
}else{
|
||||||
|
@ -115,32 +127,43 @@ var simulation=func(){
|
||||||
|
|
||||||
println("[\e[32m maketimer \e[0m] test func maketimer_multi_coroutine_test(size)");
|
println("[\e[32m maketimer \e[0m] test func maketimer_multi_coroutine_test(size)");
|
||||||
var maketimer_multi_coroutine_test=func(coroutine_size){
|
var maketimer_multi_coroutine_test=func(coroutine_size){
|
||||||
|
if(coroutine_size<1)
|
||||||
|
return;
|
||||||
var task_vec=[];
|
var task_vec=[];
|
||||||
setsize(task_vec,coroutine_size);
|
setsize(task_vec,coroutine_size);
|
||||||
forindex(var i;task_vec)
|
forindex(var i;task_vec)
|
||||||
task_vec[i]=func{};
|
task_vec[i]=func{};
|
||||||
task_vec[coroutine_size-1]=func(){
|
task_vec[coroutine_size-1]=func{
|
||||||
println("\e[101m",coroutine_size," tasks invoked.\e[0m");
|
println("\e[101m",coroutine_size," tasks invoked.\e[0m");
|
||||||
|
forindex(var i;task_vec)
|
||||||
|
task_vec[i].stop();
|
||||||
}
|
}
|
||||||
var event_vec=[];
|
var event_vec=[];
|
||||||
setsize(event_vec,coroutine_size);
|
setsize(event_vec,coroutine_size);
|
||||||
forindex(var i;event_vec)
|
forindex(var i;event_vec)
|
||||||
event_vec[i]=func{};
|
event_vec[i]=func{};
|
||||||
event_vec[coroutine_size-1]=func(){
|
event_vec[coroutine_size-1]=func{
|
||||||
println("\e[101m",coroutine_size," events invoked.\e[0m");
|
println("\e[101m",coroutine_size," events invoked.\e[0m");
|
||||||
}
|
}
|
||||||
|
var set_vec=[];
|
||||||
|
setsize(set_vec,coroutine_size);
|
||||||
|
forindex(var i;set_vec)
|
||||||
|
set_vec[i]=func{};
|
||||||
|
set_vec[coroutine_size-1]=func{
|
||||||
|
println("\e[101m",coroutine_size," settimer invoked.\e[0m");
|
||||||
|
}
|
||||||
|
|
||||||
var timer=[];
|
|
||||||
setsize(timer,coroutine_size*2);
|
|
||||||
forindex(var i;task_vec){
|
forindex(var i;task_vec){
|
||||||
timer[i]=maketimer((i+1)/5,task_vec[i]);
|
task_vec[i]=maketimer((i+1)/10,task_vec[i]);
|
||||||
timer[i].start();
|
task_vec[i].start();
|
||||||
}
|
}
|
||||||
forindex(var i;event_vec){
|
forindex(var i;event_vec){
|
||||||
timer[i+coroutine_size-1]=maketimer((i+1)/5,event_vec[i]);
|
event_vec[i]=maketimer((i+1)/10,event_vec[i]);
|
||||||
timer[i+coroutine_size-1].singleShot=1;
|
event_vec[i].singleShot=1;
|
||||||
timer[i+coroutine_size-1].start();
|
event_vec[i].start();
|
||||||
}
|
}
|
||||||
|
#forindex(var i;set_vec)
|
||||||
|
# settimer(set_vec[i],(i+1)/10);
|
||||||
simulation();
|
simulation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
10
stl/file.nas
10
stl/file.nas
|
@ -24,3 +24,13 @@ var file={
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var find_all_files=func(path){
|
||||||
|
var dd=unix.opendir(path);
|
||||||
|
var res=[];
|
||||||
|
while(var n=unix.readdir(dd))
|
||||||
|
if(unix.isfile(path~"/"~n))
|
||||||
|
append(res,n);
|
||||||
|
unix.closedir(dd);
|
||||||
|
return res;
|
||||||
|
}
|
|
@ -267,14 +267,6 @@ var assert=func(condition,message="assertion failed!"){
|
||||||
die(message);
|
die(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
# settimer alows infinite loop running a function with a time interval
|
|
||||||
var settimer=func(f,interval,realtime=1){
|
|
||||||
while(1){
|
|
||||||
unix.sleep(interval);
|
|
||||||
f();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# get time stamp, this will return a timestamp object
|
# get time stamp, this will return a timestamp object
|
||||||
var maketimestamp=func(){
|
var maketimestamp=func(){
|
||||||
var t=0;
|
var t=0;
|
||||||
|
|
Loading…
Reference in New Issue