若有任何問題,歡迎一同討論。
2009年8月17日星期一
2009年7月9日星期四
2009年7月7日星期二
讓你的 Chrome 跑的順暢 不再卡卡的方法
大多數的人一開始使用 Chrome 瀏覽器都會愛上它的反應快速,但是隨著分頁愈開愈多的時候卻發現 Chrome 的反應急遽下降,變的頓頓卡卡的,這其實是因為 Chrome 預設會一直釋放資源,如果你的系統有充足的記憶體,其實只要在啟動命令列後面加上 --memory-model=high,就可以讓你的 Chrome 跑的順暢許多,不再卡卡的。
參考: Chromium Developer Documentation - Memory Usage Backgrounder
參考: Chromium Developer Documentation - Memory Usage Backgrounder
2009年7月6日星期一
Chrome 小字典
由於苦於在 Google Chrome 下沒有 Google 工具列的翻譯工具,常常要開回 Firefox 切來切去又很麻煩,於是乾脆自己動手寫了一個 小字典 add-on for Google Chrome,雖然功能還很陽春,不過本著軟體常常放、大家放的精神,就先放出來給大家試用看看,畢竟比完全沒有還要好一點,看有什麼可以改進的地方,歡迎大家指教。
把這裡面的東西貼到書籤網址:
使用方法如下,在書籤上新增一個網頁,名稱隨便填,然後網址的地方把下面文字方塊裡的文字貼入,就大功告成了。
當你想要使用字典功能的時候,就點一下那個書籤,啟動之後右上角會跳出一個 banner,代表字典在運行,之後只要把滑鼠移到需要翻譯的字上面,就會自動查詢。
一個小問題稍微提一下,如果遇到字一直沒出來就稍微動一下滑鼠。
2009年6月26日星期五
Aza Raskin 給的 UI design talk
很有意思...
Away with Applications: The Death of the Desktop
2009年1月4日星期日
Brainfuck interpreter and jit-compiler in Java
同事之前介紹我一個奇怪的語言,叫做 brainfuck (名字不是很雅,不知道是不是暗示寫程式寫到頭腦發狂...),以下簡稱 bf,說要用 c 語言實做它的 compiler,我聽了覺得有趣,心想反正之前也沒有寫過 compiler,不如就拿這個語言當練習寫個 Java 版的 compiler 吧!
於是就有了這個 project - bfj ,一開始先實做 interpreter,做了些許的 optimization,大約快十倍,後來加入 just-in-time compiler,大約快 5 ~ 10 倍。
在 jit 模式下執行,程式會先把 bf 的 source code 讀進來轉成 IR,做該有的優化,之後轉成 Java bytecode 再 load 進來,然後 JVM 會再跟據 bytecode 執行的狀況把重複執行的部份轉成 native code 來執行。
雖然執行的方式有點迂迴,其他的語言我不敢說,不過在Java上目前我還沒看到更快的實做。
補充一下,動態產生 Java bytecode 的部份用到了之前提過的 ASM,dynamic codegen 的技巧在系統需要提供動態行為但是又不想失去效能的情況下常被用到,比方說 spring 跟 hibernate 這兩個 framwork 都需要動態建立許多 proxy ,這個時候就會用這種技巧來產生取代由 reflection 達成的功能以加快速度。hibernate 跟 spring 用的是 cglib,而 cglib 底層也是用了 ASM。
這裡有篇文章比較了 reflection 跟 codegen 速度上的分別。
另外還有個叫 JPC 的 project 是用 Java 寫了一個 x86 PC 模擬器,也是用這種方法實做出來的,目前的速度可以玩一些以前的 PC Game,蠻屌的,我個人覺得啦。
訂閱:
文章 (Atom)