[英]How significant is a performance penalty for using Int64/bigint instead of Int32/int in a C#4/T-SQL2008 application under 32-bit Windows XP?
對於我的一個科學項目,我正在開發(在C#4和T-SQL中)一個應用程序可能意味着處理非常大量非常簡單的記錄,用它們執行簡單的操作(科學模擬引擎,而不是線性時間序列計算器) )。 我想使用64位整數作為主鍵以獲得更好的容量。
我將實際集成使用Entity Framework,POCO集合和數組處理以及T-SQL存儲過程。
我將在SQL Server 2008上存儲數據庫,並同時從多個應用程序實例訪問它以進行分布式處理。
SQL Server和應用程序實例將在32位Windows XP系統上運行,有時在完全64位無意識的硬件上運行。
使用64位整數類型作為主鍵我將面臨什么懲罰?
只要你堅持閱讀和編寫這些數字(即沒有算術,只是數據庫查詢),性能損失將是微不足道的。 這就像使用2 int
作為參數而不是1。
然而,一旦你開始對它們進行算術運算,就會開始變得混亂。 相加和相減是作為正常大致3倍慢int
秒。 乘法和除法比較慢,超過一個數量級。 我在這個網站的某個地方發布了在32位cpu上乘以2個64位數字的代碼,如果你願意,我可以查找它,但它超過3頁。
看到你如何談論ID字段,你不應該對它們進行任何算術嗎? 所以你應該沒事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.