通常這雙比較結果排序時,你做的事:優化的JavaScript排序
if (x < y) return -1
else if (x > y) return 1
else return 0
或
return ((x > y) ? 1 : ((x < y)) ? -1 : 0))
兩個比較什麼似乎只能與一個來完成。在彙編中,你所要做的就是將兩者都減去一個寄存器,檢查是否爲負數,檢查是否爲零。如果我們要減去的話,問題出現在javascript中:
var sub = (x - y);
return (sub == 0 ? 0 : ((sub < 0) ? -1 : 1))
這將會導致更多的代碼被執行。
因此,一些問題:
- 有簡化或在JavaScript speedying這種方式?
- 像chrome這樣的編譯javascript解碼器能優化這種比較嗎?
- 其他語言怎麼樣?
請注意,這只是工作可靠,因爲JavaScript是採用雙打(好,我認爲它的工作可靠,與雙打,你不能太肯定)而相同的代碼**不會**對用2s補碼編碼的整數正確工作! – Voo 2011-05-10 23:54:02