2010-10-29 73 views
1

晚安投中,的SQLite和Int64的到的Int32 C#

我有我在C#中使用ExecuteScalar()命令執行一個SQLite查詢。 Object類型變量的結果實際上是Int64類型的值。由於我需要將它轉換爲Int32,我首先嚐試使用Convert.ToInt32,現在我使用的是(Int32)(Int64)Object,雖然我在兩者上獲得了相同的性能。問題是,這種類型的演員似乎需要額外的6ms才能執行,並且所涉及的方法是應該儘可能快地執行的關鍵代碼......有沒有什麼方法可以更快地執行演員製作,例如使用,位運算符還是其他一些方法?

以防萬一這是不可能的,我真的不明白爲什麼查詢的結果是一個Int64 ...有什麼辦法可以強制它是一個Int32?

非常感謝。

回答

1

您可以使用數據閱讀器而不是執行標量並調用靜態getint32函數。不知道這是否會更快。

或者,您可以在返回之前將結果轉換爲sql查詢。再次,這實際上可能會降低整體性能。

+0

非常感謝。第一個建議起作用,速度提高2-3倍。 – Miguel 2010-10-29 21:09:34

+0

我只提到它,因爲我有理由懷疑ExecuteScalar只是創建一個datareader並返回第一行/列中的第一個對象。這意味着它正在做一個額外的拳擊操作。差異應該是相當微不足道的,但我想這不是在這種情況下。 6ms似乎是一個非常長的時間來執行雙重演員(與隱式轉換)在盒裝然後unboxed int64。您是否在測試測試裝置內測試速度? – wllmsaccnt 2010-10-29 22:35:14