mirror of
https://github.com/ValKmjolnir/Nasal-Interpreter.git
synced 2026-07-23 03:18:43 +08:00
⚡ add runtime.gc.extend
This commit is contained in:
+7
-2
@@ -1,6 +1,11 @@
|
||||
import.stl.sort;
|
||||
import.stl.process_bar;
|
||||
|
||||
for(var i=0;i<3910;i+=1){
|
||||
runtime.gc.extend("str");
|
||||
runtime.gc.extend("vec");
|
||||
}
|
||||
|
||||
var test=func(n){
|
||||
var ts=maketimestamp();
|
||||
var bar=process_bar.high_resolution_bar(50);
|
||||
@@ -56,8 +61,8 @@ var test=func(n){
|
||||
}
|
||||
}
|
||||
|
||||
println(cnt," result(s) in ",ts.elapsedMSec()/1000," sec");
|
||||
println(str(cnt)," result(s) in ",ts.elapsedMSec()/1000," sec");
|
||||
}
|
||||
|
||||
for(var i=100;i<1e6;i*=10)
|
||||
for(var i=100;i<1e7;i*=10)
|
||||
test(i);
|
||||
@@ -1,5 +1,9 @@
|
||||
import.module.libsock;
|
||||
|
||||
for(var i=0;i<60;i+=1){
|
||||
runtime.gc.extend("str");
|
||||
}
|
||||
|
||||
var http=func(){
|
||||
var sd=nil;
|
||||
return {
|
||||
|
||||
+15
-7
@@ -5,25 +5,33 @@ for(;;){
|
||||
}
|
||||
for(var i=1;;)break;
|
||||
for(var i=1;;i+=1)break;
|
||||
for(var i=1;i<10;i+=1)print(i,'\n');
|
||||
|
||||
for(var i=1;i<10;i+=1)
|
||||
print(i," ");
|
||||
print("\n");
|
||||
while(1)break;
|
||||
var j=0;
|
||||
while(j<10){
|
||||
print(j,'\n');
|
||||
print(j," ");
|
||||
j+=1;
|
||||
}
|
||||
print("\n");
|
||||
|
||||
forindex(var j;[0,1,2,3])print(j,'\n');
|
||||
forindex(var j;[0,1,2,3])
|
||||
print(j," ");
|
||||
print("\n");
|
||||
forindex(var j;[0,1,2,3]){
|
||||
var a=j;
|
||||
print(a*a,'\n');
|
||||
print(a*a," ");
|
||||
}
|
||||
foreach(var j;[0,1,2,3])print([0,1,2,3][j],'\n');
|
||||
print("\n");
|
||||
foreach(var j;[0,1,2,3])
|
||||
print([0,1,2,3][j]," ");
|
||||
print("\n");
|
||||
foreach(var j;[0,1,2,3]){
|
||||
var a=[0,1,2,3][j];
|
||||
print(a*a-1,'\n');
|
||||
print(a*a-1," ");
|
||||
}
|
||||
print("\n");
|
||||
|
||||
var f=func(){
|
||||
var x=0;
|
||||
|
||||
+108
-37
@@ -64,47 +64,18 @@ var mem_occupation=func(){
|
||||
return mem_res;
|
||||
}
|
||||
|
||||
func(){
|
||||
var limited_loop=(size(runtime.argv())!=0 and !math.isnan(num(runtime.argv()[0])));
|
||||
if(limited_loop){
|
||||
limited_loop=num(runtime.argv()[0]);
|
||||
}else{
|
||||
limited_loop=-1;
|
||||
}
|
||||
var random_generator=func(){
|
||||
var rise=[" ","▁","▂","▃","▄","▅","▆","▇","█"];
|
||||
var total=0;
|
||||
var statistics=[];
|
||||
setsize(statistics,70);
|
||||
|
||||
var co=coroutine.create(cpu_occupation);
|
||||
var bar=process_bar.high_resolution_bar(48);
|
||||
print("\ec");
|
||||
while(limited_loop!=0){
|
||||
limited_loop=limited_loop<0?limited_loop:limited_loop-1;
|
||||
var mem=mem_occupation();
|
||||
var mem_occ=(mem.MemTotal-mem.MemFree)/mem.MemTotal*100;
|
||||
if(math.isnan(mem_occ) or mem_occ<0 or mem_occ>100){
|
||||
mem_occ=0;
|
||||
}
|
||||
var cpu_occ=nil;
|
||||
while((cpu_occ=coroutine.resume(co)[0])==nil){
|
||||
var key=libkey.nonblock();
|
||||
if(key!=nil and chr(key)=="q")
|
||||
return;
|
||||
}
|
||||
println("\e[1;1H\e[1m Operating system : \e[0m",is_windows_platform?"\e[31m":"\e[36m",os.platform(),"\e[0m");
|
||||
println("\e[2;1H\e[1m Current time : \e[0m\e[36m",os.time(),"\e[0m");
|
||||
println("\e[3;1H\e[1m Memory total(GB) : \e[0m\e[36m",mem.MemTotal/1024/1024,"\e[0m");
|
||||
println("\e[4;1H\e[1m Memory free(GB) : \e[0m\e[36m",mem.MemFree/1024/1024,"\e[0m");
|
||||
println("\e[5;1H\e[1m Memory occupation(%): \e[0m",mem_occ>60?"\e[91m":"\e[32m",bar.bar(mem_occ/100)~" ",mem_occ,"\e[0m ");
|
||||
println("\e[6;1H\e[1m CPU occupation(%) : \e[0m",cpu_occ>90?"\e[91m":"\e[32m",bar.bar(cpu_occ/100)~" ",cpu_occ,"\e[0m ");
|
||||
|
||||
for(var i=0;i<size(statistics);i+=1){
|
||||
while(1){
|
||||
for(var i=0;i<10;i+=1){
|
||||
total+=1;
|
||||
var u=rand()*rand()*(rand()>0.5?-1:1);
|
||||
statistics[int(size(statistics)/2+u*size(statistics)/2)]+=1;
|
||||
}
|
||||
var s=["","","",""];
|
||||
var s=["","",""];
|
||||
foreach(var st;statistics){
|
||||
var max_rate=100/size(statistics);
|
||||
var rate=st/total*100;
|
||||
@@ -118,17 +89,117 @@ func(){
|
||||
}
|
||||
}
|
||||
}
|
||||
var tmp="";
|
||||
var tmp="";
|
||||
for(var i=0;i<size(statistics);i+=1){
|
||||
tmp~="-";
|
||||
}
|
||||
println("\e[16;1H \e[32m|",s[0],"|\e[0m");
|
||||
println("\e[17;1H \e[32m|",s[1],"|\e[0m");
|
||||
println("\e[18;1H \e[32m|",s[2],"|\e[0m");
|
||||
println("\e[19;1H \e[32m+"~tmp~"+\e[0m");
|
||||
coroutine.yield();
|
||||
}
|
||||
}
|
||||
|
||||
func(){
|
||||
var limited_loop=(size(runtime.argv())!=0 and !math.isnan(num(runtime.argv()[0])));
|
||||
if(limited_loop){
|
||||
limited_loop=num(runtime.argv()[0]);
|
||||
}else{
|
||||
limited_loop=-1;
|
||||
}
|
||||
|
||||
var rise=[" ","▁","▂","▃","▄","▅","▆","▇","█"];
|
||||
|
||||
var cpu_occupation_log=[];
|
||||
var mem_occupation_log=[];
|
||||
setsize(cpu_occupation_log,70);
|
||||
setsize(mem_occupation_log,70);
|
||||
|
||||
var co=coroutine.create(cpu_occupation);
|
||||
var rd=coroutine.create(random_generator);
|
||||
|
||||
var bar=process_bar.high_resolution_bar(48);
|
||||
print("\ec");
|
||||
while(limited_loop!=0){
|
||||
limited_loop=limited_loop<0?limited_loop:limited_loop-1;
|
||||
var mem=mem_occupation();
|
||||
var mem_occ=(mem.MemTotal-mem.MemFree)/mem.MemTotal*100;
|
||||
if(math.isnan(mem_occ) or mem_occ<0 or mem_occ>100){
|
||||
mem_occ=0;
|
||||
}
|
||||
var cpu_occ=nil;
|
||||
while((cpu_occ=coroutine.resume(co)[0])==nil){
|
||||
var key=libkey.nonblock();
|
||||
coroutine.resume(rd);
|
||||
if(key!=nil and chr(key)=="q")
|
||||
return;
|
||||
}
|
||||
|
||||
if(is_windows_platform or is_macos_platform){
|
||||
# sorry this is not real data
|
||||
cpu_occ=rand()*10;
|
||||
mem_occ=rand()*10+40;
|
||||
}
|
||||
|
||||
for(var i=0;i<size(cpu_occupation_log)-1;i+=1){
|
||||
cpu_occupation_log[i]=cpu_occupation_log[i+1];
|
||||
mem_occupation_log[i]=mem_occupation_log[i+1];
|
||||
}
|
||||
cpu_occupation_log[-1]=cpu_occ;
|
||||
mem_occupation_log[-1]=mem_occ;
|
||||
|
||||
println("\e[1;1H\e[1m Operating system : \e[0m",is_windows_platform?"\e[31m":"\e[36m",os.platform(),"\e[0m");
|
||||
println("\e[2;1H\e[1m Current time : \e[0m\e[36m",os.time(),"\e[0m");
|
||||
println("\e[3;1H\e[1m Memory total(GB) : \e[0m\e[36m",mem.MemTotal/1024/1024,"\e[0m");
|
||||
println("\e[4;1H\e[1m Memory free(GB) : \e[0m\e[36m",mem.MemFree/1024/1024,"\e[0m");
|
||||
println("\e[5;1H\e[1m Memory occupation(%): \e[0m",mem_occ>60?"\e[91m":"\e[32m",bar.bar(mem_occ/100)~" ",mem_occ,"\e[0m ");
|
||||
println("\e[6;1H\e[1m CPU occupation(%) : \e[0m",cpu_occ>90?"\e[91m":"\e[32m",bar.bar(cpu_occ/100)~" ",cpu_occ,"\e[0m ");
|
||||
|
||||
var tmp="";
|
||||
for(var i=0;i<70;i+=1){
|
||||
tmp~="-";
|
||||
}
|
||||
|
||||
var s=["","",""];
|
||||
foreach(var occ;cpu_occupation_log){
|
||||
var max_rate=50/size(s);
|
||||
var rate=occ;
|
||||
for(var i=size(s)-1;i>=0;i-=1){
|
||||
if(rate>=max_rate){
|
||||
s[i]~="█";
|
||||
rate-=max_rate;
|
||||
}else{
|
||||
s[i]~=rise[rate/max_rate*size(rise)];
|
||||
rate=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
println("\e[7;1H \e[32m+"~tmp~"+\e[0m");
|
||||
println("\e[8;1H \e[32m|",s[0],"|\e[0m");
|
||||
println("\e[9;1H \e[32m|",s[1],"|\e[0m");
|
||||
println("\e[10;1H \e[32m|",s[2],"|\e[0m");
|
||||
println("\e[11;1H \e[32m|",s[3],"|\e[0m");
|
||||
println("\e[12;1H \e[32m+"~tmp~"+\e[0m");
|
||||
println("\e[11;1H \e[32m+"~tmp~"+\e[0m");
|
||||
|
||||
println("\e[13;1H Press 'q' to quit.");
|
||||
var s=["","",""];
|
||||
foreach(var occ;mem_occupation_log){
|
||||
var max_rate=100/size(s);
|
||||
var rate=occ;
|
||||
for(var i=size(s)-1;i>=0;i-=1){
|
||||
if(rate>=max_rate){
|
||||
s[i]~="█";
|
||||
rate-=max_rate;
|
||||
}else{
|
||||
s[i]~=rise[rate/max_rate*size(rise)];
|
||||
rate=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
println("\e[12;1H \e[32m|",s[0],"|\e[0m");
|
||||
println("\e[13;1H \e[32m|",s[1],"|\e[0m");
|
||||
println("\e[14;1H \e[32m|",s[2],"|\e[0m");
|
||||
println("\e[15;1H \e[32m+"~tmp~"+\e[0m");
|
||||
|
||||
println("\e[20;1H Press 'q' to quit.");
|
||||
}
|
||||
}();
|
||||
+30
-53
@@ -1,25 +1,33 @@
|
||||
var code=[
|
||||
[1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1],
|
||||
[1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1],
|
||||
[1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0,1,1,1,0,1],
|
||||
[1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0,1,1,1,0,1],
|
||||
[1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0,1,1,1,0,1],
|
||||
[1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1],
|
||||
[1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1],
|
||||
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[1,1,1,1,1,1,1,0,1,0,0,1,1,0,1,0,1,0,1,1,0,0,1,1,1,1,1,1,1],
|
||||
[1,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0,1,1,1,1,0,1,0,0,0,0,0,1],
|
||||
[1,0,1,1,1,0,1,0,0,0,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,1,1,0,1],
|
||||
[1,0,1,1,1,0,1,0,0,0,0,0,1,0,0,1,1,1,0,1,1,0,1,0,1,1,1,0,1],
|
||||
[1,0,1,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,0,1,0,1,1,1,0,1],
|
||||
[1,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,1],
|
||||
[1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1],
|
||||
[0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0],
|
||||
[1,1,0,1,1,0,1,0,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,0,0,0,1],
|
||||
[1,1,0,1,0,0,0,1,1,1,0,0,1,1,1,1,0,1,1,1,0,1,0,1,1,0,1,1,0],
|
||||
[1,0,1,1,0,1,1,1,0,0,1,1,1,1,0,1,1,0,1,0,1,0,0,1,1,0,1,0,0],
|
||||
[0,0,0,0,1,0,0,1,0,1,1,0,1,0,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1],
|
||||
[0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0,0,1],
|
||||
[1,1,0,0,1,1,0,1,1,1,0,1,0,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1],
|
||||
[1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,0,1,0,1,1,1,1,0,1,0,1,0,1],
|
||||
[0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,1,1,0,1,0,1],
|
||||
[0,1,0,0,0,0,1,0,0,0,0,1,1,1,0,1,0,0,0,1,1,1,0,0,0,1,0,0,0],
|
||||
[1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,1,0,0,0,0,1,0,1,1,0],
|
||||
[1,1,1,1,0,1,1,1,1,0,0,1,1,1,0,1,1,1,0,1,0,0,0,0,1,1,0,0,1],
|
||||
[1,1,1,1,1,1,0,0,0,1,1,0,0,1,0,1,1,0,1,1,0,0,1,0,0,1,1,0,0],
|
||||
[1,1,1,0,0,1,1,0,1,0,0,0,0,0,1,0,1,1,0,0,1,1,1,1,1,1,1,1,0],
|
||||
[0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,1,1,0,1,0,0,0,1,1,0,0,0],
|
||||
[1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,0,0,1,1,0,1,0,1,1,0,0,0],
|
||||
[1,0,0,0,0,0,1,0,0,1,1,1,0,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1],
|
||||
[1,0,1,1,1,0,1,0,1,1,0,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1],
|
||||
[1,0,1,1,1,0,1,0,1,0,1,1,0,1,0,1,0,1,1,0,0,1,0,0,0,0,0,1,1],
|
||||
[1,0,1,1,1,0,1,0,0,0,0,0,1,1,0,1,1,0,1,0,1,1,0,1,1,0,1,1,1],
|
||||
[1,0,0,0,0,0,1,0,1,0,0,1,1,0,1,1,1,0,0,0,0,0,1,1,0,1,1,0,1],
|
||||
[1,1,1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,1,1,0,1,0,1,0,0,0,0],
|
||||
];
|
||||
|
||||
# enable unicode
|
||||
@@ -30,35 +38,4 @@ for(var i=0;i<size(code);i+=1){
|
||||
for(var j=0;j<size(code[i]);j+=1)
|
||||
print(texture[code[i][j]]);
|
||||
print('\n');
|
||||
}
|
||||
|
||||
var transfer=func(s){
|
||||
var mode=[0,1,0,0];
|
||||
println(mode);
|
||||
|
||||
var len=size(s);
|
||||
var vec=[0,0,0,0,0,0,0,0,0];
|
||||
for(var i=8;i>=0;i-=1){
|
||||
vec[i]=bits.u32_and(1,len);
|
||||
len=int(len/2);
|
||||
}
|
||||
println(vec);
|
||||
|
||||
var bitstr=[];
|
||||
for(var i=0;i<size(s);i+=1){
|
||||
var tmp=[0,0,0,0,0,0,0,0];
|
||||
var c=s[i];
|
||||
for(var j=7;j>=0;j-=1){
|
||||
tmp[j]=bits.u32_and(1,c);
|
||||
c=int(c/2);
|
||||
}
|
||||
foreach(var j;tmp)
|
||||
append(bitstr,j);
|
||||
}
|
||||
println(bitstr);
|
||||
|
||||
var end=[0,0,0,0];
|
||||
println(end);
|
||||
}
|
||||
|
||||
transfer("github.com/ValKmjolnir");
|
||||
}
|
||||
Reference in New Issue
Block a user