2013-02-19 52 views
0

我正在加載一個巨大的數據集到內存中。代碼基本上循環遍歷DataTable,並將DataRow中的值複製到int變量中。出於某種原因,我在循環過程中聲明的變量幾乎比在方法頂部聲明的變量快兩倍。爲什麼實例化內聯變量會導致代碼更快?

下面是Ants Perf Profiler的屏幕截圖。正如你可以,行siteID = (int) oDR[FIELD_SITE_ID]幾乎是前一行的兩倍。爲什麼會這樣?

enter image description here

+2

您是否嘗試過從數據集中提取相同的字段?它可能與基礎數據類型綁定,併爲'oDR [FIELD_SITE_ID]' – DiskJunky 2013-02-19 22:26:54

+0

特定的轉換。你是否嘗試過在同一個循環內實例化'siteID'? – MyCodeSucks 2013-02-19 22:27:42

+0

也許在行上查找'FIELD_SITE_ID'只需要比'FIELD_BREAK_ID'更長的時間。 – Magnus 2013-02-19 22:29:01

回答

0

難道不是是oDR[FIELD_SITE_ID]就是很慢嗎?嘗試將其分配給循環中的變量,然後將其分配給變量siteID。如果我是正確的,你應該看到罰款已經從你的sideID轉讓轉移到從oDR獲得價值的陳述。

int siteIDtmp = (int)oDR[FIELD_SITE_ID]; 
siteID = siteIDtmp; 
相關問題