5
在JavaScript中,我自己的仿真器實現方式中,從一個32位指令i
越來越寄存器字段RA
的值通常表示爲:在JavaScript中'inlining'?
this.gpr.u32[(i >> 16) & 0x1f]
然而,具有上述表達式多次在一個功能是難看並很難遵循和編輯。我避免用該表達式定義變量ra
並使用它,因爲我認爲它將被存儲在內存中,並且獲取它將是昂貴的。我應該爲此擔心還是現代JavaScript引擎將變量的值「嵌入」到定義後面的語句中?雖然使用變量會使代碼更清潔,但如果它會在仿真器等性能敏感的環境中減慢執行時間,我並不想使用它。
謝謝!所以你所說的是,任何不必要的'ra'訪問延遲都會因爲獲取'i'的不必要的訪問延遲,做一個轉換,做一個AND,然後從'this.gpr中獲取一個項目而被大大超出。 u32',假設長表單不會被引擎自動緩存。 – 2011-05-22 09:26:22
@Delan Azabani:或多或少。一個引擎比一個整體表達式更容易嵌入單個變量,因此我懷疑大多數引擎在前者中要好得多。 – Howard 2011-05-22 09:28:14
再次感謝。你的回答非常有幫助。 – 2011-05-22 09:29:30