簡體   English   中英

將所有可能的資源分配給程序

[英]Give all possible resources to a program

我用C#創建了一個程序,以處理Oracle Express(本地實例)中的250萬條記錄,解析/拆分這些記錄,並另外創建500萬條記錄。

我添加了一些代碼來在屏幕上打印時間,它看起來相當快。 它每9秒執行1K記錄的所有處理。 這意味着需要6個小時以上才能完成。

現在,通過任務管理器,我可以看到程序正在使用6%的CPU(最大)和大約50MB的內存。 我了解操作系統,Oracle本身需要資源才能運行,但是.....有一種方法可以告訴這個小程序“嘿,沒關系,繼續使用至少50%的CPU,有4GB的RAM,所以把自己打昏”?

注意:我在Oracle Express中使用本地實例的原因之一是為了減少網絡瓶頸。 另外,我可能不會經常運行此過程,但是我很想知道這是否完全可能。

請原諒我的愚昧

謝謝!

操作系統將為您的程序提供所需的所有資源,原因是您的進程沒有消耗所有CPU,這可能是因為它比處理器更需要IO子系統。

如果要查看是否可以消耗更多的CPU周期,請嘗試編寫一個運行盡可能短的無限循環的程序,您會發現CPU使用率的差異。

我有很多想法,但並不是真正的答案。

  1. 您可以提高應用程序線程的優先級,但是,代碼的效率可能比您想象的要低,所以。

您在上面運行了探查器嗎?

  1. 如果它當前是一個單線程應用程序,則可以查看是否可以批量解析它,然后並行運行它們。

  2. 在不了解記錄拆分的很多細節的情況下,是否有可能將更多的工作交給Oracle執行? 例如,對網絡等或本地或其他方面的影響較小。

  3. 如果您正在繪制/更新屏幕或UI的應用程序,那么幾乎可以肯定會減慢工作進度。 一個例子。 我運行了一個應用程序,該程序將大約1萬封電子郵件分類成大約25萬行到數據庫中,如果我在每行中將一個項目添加到列表框中,則時間從短到冗長,例如,崩潰很無聊。 因此,再次強調,卸載線程以完成盡可能少的UI更新可以完成工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM