2011-09-19 48 views
0

我工作的一個相當大的項目: 該方案具有同時做多個任務和他們每個人做上百個複雜的計算的每一秒。該計劃必須全天候工作。由於我不是一個proffessionnal程序員,我不知道這種程序如何處理內存和CPU,因此我請求您的幫助。優化內存使用,代碼選擇

該程序具有不同的功能在一週內,比在週末做。 我很熟悉兩種語言,Python和C#。

  1. 我需要這個應用程序是快速的,所以對於計算,我認爲c#會更快地處理它們。

  2. 該程序必須全天候工作,所以我可能認爲一個Python編寫的項目中有幾個小腳本可以調用彼此的多任務永久工作,比Big C#代碼更好。

  3. 如何寫它的最佳方式?

我想喜歡

// During the week 
function1() 
{ 
    do 
    { 
     ... 
     huge code and functions call here 
     ... 
    } 
    while DateTime < Friday 23:59 

    if DateTime = Friday 23:59 
    { 
     function2() 
     function1.close 
    } 
} 

// During the weekend 
function2() 
{ 
    do 
    { 
     ... 
     different code and functions call here 
     ... 
    } 
    while DateTime < Sunday 23:59 

    if DateTime = Sunday 23:59 
    { 
     function1() 
     function2.close 
    } 
} 

,這是什麼問題的最好辦法,僞代碼寫呢?這是一個相當大的問題,但歡迎任何形式的建議。謝謝

編輯 問題是:該程序是相當複雜的數百個函數和計算。我希望它是最快和最低的內存消耗。 如何寫得最好

+0

這裏有什麼確切的問題/問題?機器人會做,你沒有記憶問題(還)。 –

+1

如果您希望獲得更高的可靠性,請勿混合使用語言。堅持C#如果這就是你感覺舒適,速度很重要。 –

回答

1

如果你需要速度,numpy的可以幫助你,這是非常快(它是基於圖譜,BLAS,LAPACK)。 我不知道你是否可以在C#中使用它。

如果你有大量的計算做,你應該找到一種方法來存儲的情況下,東西碰撞的結果。此外,也許你可以找到一種方法來優化使用緩存。否則,你可以嘗試使用幾臺電腦使用像「mpi」這樣的庫。無論如何,你應該考慮這些要點,以便能夠擴展。

不同的地方是計算成本蟒蛇可能是一個很好的選擇,因爲C#。如果可以使用第三個庫來完成計算,那麼它並不重要。

但我同意obrok,避免混合語言,並儘量保持它簡單越好。

對於內存來說,使用緩存可能是一件好事,或者你應該把你的計算切割成小部分。研究numpy/scipy函數可以幫助你。

+0

我忘了說每次計算完成時,所有內容都存儲在** SQL表中**,並且SQL Server在C#中的實現非常好。儘管python中有mysql。我不知道哪種語言能夠同時處理數百次操作中的最佳操作 – prince

+1

爲什麼你不做存儲過程?也許這是你的情況的簡單方法。我不知道你打算做什麼,但它可以做得很好:) – ykatchou

+0

非常感謝,我不知道thoses存儲過程,你有一個接受的答案,因爲它可以幫助我很多 – prince