2011-09-19 43 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