Homework4(B)
  • 難度:中
  • 改善 JIT compiler,加入若干 optimization techniques
  • 紀錄若干效能最佳化技巧帶來的提昇
  • 建立新的 Hackpad,列在「+作業區
  • 標注「開發紀錄(B)」
 

Reference:

  • What is JIT Compiler:
 
 
Note:文件讀完後還是霧撒撒,再tutorial最底下可以直接裝他的example來比照閱讀會比較好理解DynASM
 

優化(B)

原始版本:
 
progs/awib.b GOOD
122.9ms
progs/mandelbrot.b GOOD
3139.9ms
progs/hanoi.b GOOD
7953.1ms
 
優化版本1:
遇到一連串'+'會統計有幾個'+'
接著一次加入到*ptr內
'-','>','<'也是同樣的作法
實作:使用一個簡單的for迴圈可以同時檢測並且紀錄有幾個operator
calculate pointer:
for(val=1;*(++p)=='>';val++);
    |  add  PTR,val
    p--;
    break;
 
calculate value:
for(val=1;*(++p)=='+';val++);
    |  add byte [PTR],val
    p--;
    break;
    
效果:
progs/awib.b GOOD
72.9ms
progs/mandelbrot.b GOOD
1192.8ms
progs/hanoi.b GOOD
4018.5ms
優化版本2: