幾天前,我開始接觸基於股票的公司的c#.net開發者訪問,他們的應用程序必須在第二個時間內頻繁更新。所以,Interviewer告訴我,獲取鎖定或在.NET Generic集合(如List,Stack,Dictionary)上提供線程同步非常緩慢。所以,他們使用他們的自定義集合。 所以,我在想,「難道.NET集合很慢時獲取鎖和釋放鎖,即使他們是緩慢的,那麼我們如何能夠通過編寫自定義泛型類改善,業績」在多線程環境下,.NET通用集合的速度較慢
1
A
回答
4
泛型和多線程與彼此無關。鑑於此,我不確定你在問什麼。
.net收藏真的很慢嗎?
...是無法回答的,因爲表現是相對的。
我們如何通過編寫自定義泛型類
提高,業績你不能因爲仿製藥什麼都沒有做與此有關。您可以通過編寫定製的應用程序特定需求的自定義集合來提高性能。這是一個不錯的主意,但它可以。例如,創建一個比內置的List<T>
更快的類很容易。以List<T>
作爲模板並刪除所有迭代器版本控制邏輯以刪除一些開銷。這個小勝很少值得。
如果您需要建議:嘗試使用內置集合。同步命名空間有一個System.Collections.Concurrent
命名空間。
鑑於我們所掌握的信息,無法判斷面試官是否正確或錯誤地構建自定義集合。
我的問題是,爲什麼鎖是在.NET集合
慢只能使用lock
與.NET,所以我不知道你是問這裏。另外:比慢什麼?
有沒有什麼辦法以比鎖提供更快的方式實現與可變對象的同步?
通常,這是可能的。這是如何完成的,完全取決於具體情況。如果有一種通用的方法來做lock
,但速度更快,那麼我們首先不需要lock
。
我試圖通過收集您詢問和解決的所有不同問題來幫助您。我想,如果你問了更少,更確切的問題,你會自己找到答案,或者認識到有些問題沒有多大意義。提出正確的問題通常會導致答案。
+1
感謝您澄清並抱歉未發佈簡潔問題,因爲我也陷入混亂。順便再次感謝你 –
相關問題
- 1. 多線程環境下緩存集合的無限循環
- 2. 使用多線程時程序運行速度較慢
- 3. 多線程減慢程序的速度
- 4. 在.net中調試多線程環境
- 5. 在多線程環境下的Android ResultReceiver
- 6. C++多線程執行速度減慢
- 7. 爲什麼我的代碼在Java中使用多線程的速度較慢?
- 8. 多線程環境下的OperationContext.Current.SessionId
- 9. 在CPU預處理期間使用多線程時Tensorflow速度較慢
- 10. AnyEvent在多線程環境
- 11. 在多線程環境
- 12. 多線程程序運行速度慢於單線程
- 13. 在某些連接速度較慢的環境中找不到Javascript函數
- 14. 慢速queryAggreate Aerospike多線程
- 15. 多線程工作較慢
- 16. 在多線程環境中限制連接組的速率
- 17. 在多線程環境中使用NLog
- 18. 在多線程環境中使用CList
- 19. 在多線程環境中使用TraceSource
- 20. 在多線程環境中使用StringBuilder
- 21. 在多線程環境中使用Log4Net
- 22. 在多線程環境中使用sqlite
- 23. 同步方法在單線程應用程序中速度較慢嗎?
- 24. Struts上傳速度較慢
- 25. JProfiler快照速度較慢
- 26. CURAND運行速度較慢
- 27. 爲什麼我的PHP應用程序在我的生產環境中運行速度較慢?
- 28. 在模擬低內存,CPU速度較慢的環境中運行我的應用程序
- 29. 爲什麼增加線程競爭聯鎖速度較慢?
- 30. 實現多線程環境
這不是收集緩慢。 '鎖'是。 – MarcinJuraszek
編寫自己的*自定義線程安全集合聽起來像是一個非常非常糟糕的主意。而是使用System.Collections.Concurrent中的集合。 –
以線程安全的方式使用集合。如果他們因爲錯誤地使用它而貶低一個班級,這聽起來不像是一個我想與之合作的公司 - 在一次採訪中。無論「基於股票」意味着什麼...... –