📄 test_31.mal
字号:
# Monet Mil to Mal compiler# Copyright (c) 2001-2004, CWI. All rights reserved.#Predefined code segment#The compiler can not guarantee an accurate compilation,#because MIL unlike MAL is a dynamically typed language.#A few guidelines to maximize usefullness.#- make the type of variables explicit, in particular 'nil'#- upon advice of M2m to remap identifiers, change it in your program directly#use the "mil_schema" for additional support routines# io.print("setoid(oid(20000000));"); aa_a := calc.oid(20000000); ba_a := setoid(aa_a);# io.print("## Performance test for closure and traversals\n");# io.print("proc fill(int size) : BAT[int,int] {");function fill(size:int):bat[:int,:int];# io.print(" var c:= bat.new(int,int);"); c := bat.new(nil:int,nil:int);# io.print(" var i := 1;"); i := 1;# io.print(" while(i < size) {");barrier ca_a := true;barrier da_a := <(i,size);# io.print(" bat.insert(c,i,i:=i+1);"); i := +(i,1); ea_a := bat.insert(c,i,i);# io.print(" }");redo ca_a;exit da_a;exit ca_a;# io.print(" bat.insert(c,i,1);"); fa_a := bat.insert(c,i,1);# io.print(" return c;"); return ga_a :=c;end fill;# io.print("var c := closure(fill(20)); "); ha_a := fill(20); c := closure(ha_a);# io.print("count(c).print();"); ia_a := aggr.count(c); ja_a := bat.print(ia_a);# io.print("var z:= time();"); z := alarm.time();# io.print("var clo:= closure(c);"); clo := closure(c);# io.print("printf(\"#~BeginVariableOutput~#\\nclosure in %d ms cnt %d\\n#~EndVariableOutput~#\\n\",time()-z,count(clo));"); ka_a := alarm.time(); la_a := -(ka_a,z); ma_a := aggr.count(clo); na_a := printf("#~BeginVariableOutput~#\nclosure in %d ms cnt %d\n#~EndVariableOutput~#\n",la_a,ma_a);# io.print("## testing traversal on directed acyclic graph\n");# io.print("## produces the end-points only\n"); d := bat.new(nil:int,nil:int);# io.print("d.insert(1,1);"); oa_a := bat.insert(d,1,1);# io.print("d.subgraph(c).print();"); pa_a := subgraph(d,c); qa_a := bat.print(pa_a);# io.print("## The alternative is to extract a subgraph as a set\n"); ra_a := clear(d);# io.print("d.insert(2,2);"); sa_a := bat.insert(d,2,2);# io.print("var z:= time();"); z := alarm.time();# io.print("var e:=d.subgraph(c); printf(\"#~BeginVariableOutput~#\\nsubgraph in %d ms on %d\\n#~EndVariableOutput~#\\n\",time()-z,count(e));"); e := subgraph(d,c); ta_a := alarm.time(); ua_a := -(ta_a,z); va_a := aggr.count(e); wa_a := printf("#~BeginVariableOutput~#\nsubgraph in %d ms on %d\n#~EndVariableOutput~#\n",ua_a,va_a);# io.print("d.clear();"); xa_a := clear(d);# io.print("d.insert(2,2);"); ya_a := bat.insert(d,2,2);# io.print("d.insert(3,3);"); ab_a := bat.insert(d,3,3);# io.print("z:= time(); "); z := alarm.time();# io.print("e:=d.subgraph(c); printf(\"#~BeginVariableOutput~#\\nsubgraph in %d ms cnt %d\\n#~EndVariableOutput~#\\n\",time()-z,count(e));"); e := subgraph(d,c); bb_a := alarm.time(); cb_a := -(bb_a,z); db_a := aggr.count(e); eb_a := printf("#~BeginVariableOutput~#\nsubgraph in %d ms cnt %d\n#~EndVariableOutput~#\n",cb_a,db_a);# io.print("d.clear();"); fb_a := clear(d);# io.print("d.insert(2,2);"); gb_a := bat.insert(d,2,2);# io.print("d.insert(3,3);"); hb_a := bat.insert(d,3,3);# io.print("d.insert(4,4);"); ib_a := bat.insert(d,4,4);# io.print("d.insert(5,5);"); jb_a := bat.insert(d,5,5);# io.print("z:= time(); "); z := alarm.time();# io.print("e:=d.subgraph(c); printf(\"#~BeginVariableOutput~#\\nsubgraph in %d ms cnt %d\\n#~EndVariableOutput~#\\n\",time()-z,count(e));"); e := subgraph(d,c); kb_a := alarm.time(); lb_a := -(kb_a,z); mb_a := aggr.count(e); nb_a := printf("#~BeginVariableOutput~#\nsubgraph in %d ms cnt %d\n#~EndVariableOutput~#\n",lb_a,mb_a);# io.print("## LARGE TEST\n"); ob_a := printf("#~BeginVariableOutput~#\n"); pb_a := cpu(); qb_a := bat.print(pb_a); rb_a := printf("#~EndVariableOutput~#\n");# io.print("d.clear();"); sb_a := clear(d);# io.print("d.insert(2,2);"); tb_a := bat.insert(d,2,2);# io.print("z:= time();"); z := alarm.time();# io.print("e:=d.subgraph(clo); "); e := subgraph(d,clo);# io.print("printf(\"#~BeginVariableOutput~#\\nsubgraph in %d ms on %d\\n#~EndVariableOutput~#\\n\",time()-z,count(e));"); ub_a := alarm.time(); vb_a := -(ub_a,z); wb_a := aggr.count(e); xb_a := printf("#~BeginVariableOutput~#\nsubgraph in %d ms on %d\n#~EndVariableOutput~#\n",vb_a,wb_a);# io.print("d.clear();"); yb_a := clear(d);# io.print("## d.insert(2,2);\n"); ac_a := bat.insert(d,3,3);# io.print("z:= time(); "); z := alarm.time();# io.print("e:=d.subgraph(clo); "); e := subgraph(d,clo);# io.print("printf(\"#~BeginVariableOutput~#\\nsubgraph in %d ms cnt %d\\n#~EndVariableOutput~#\\n\",time()-z,count(e));"); bc_a := alarm.time(); cc_a := -(bc_a,z); dc_a := aggr.count(e); ec_a := printf("#~BeginVariableOutput~#\nsubgraph in %d ms cnt %d\n#~EndVariableOutput~#\n",cc_a,dc_a);# io.print("d.clear();"); fc_a := clear(d);# io.print("##d.insert(2,2);\n");# io.print("##d.insert(3,3);\n"); gc_a := bat.insert(d,4,4);# io.print("##d.insert(5,5);\n"); z := alarm.time();# io.print("e:=d.subgraph(clo); printf(\"#~BeginVariableOutput~#\\nsubgraph in %d ms cnt %d\\n#~EndVariableOutput~#\\n\",time()-z,count(e));"); e := subgraph(d,clo); hc_a := alarm.time(); ic_a := -(hc_a,z); jc_a := aggr.count(e); kc_a := printf("#~BeginVariableOutput~#\nsubgraph in %d ms cnt %d\n#~EndVariableOutput~#\n",ic_a,jc_a);# io.print("printf(\"#~BeginVariableOutput~#\\n\"); cpu().print(); printf(\"#~EndVariableOutput~#\\n\");"); lc_a := printf("#~BeginVariableOutput~#\n"); mc_a := cpu(); nc_a := bat.print(mc_a); oc_a := printf("#~EndVariableOutput~#\n");# io.print("quit();"); pc_a := clients.quit();#Identifer 'time' mapped to 'alarm.time'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -