优化内存使用,代码选择

时间:2011-09-19 08:39:44

标签: c# python

我正在开展一个相当大的项目: 该程序必须同时执行多个任务,并且每个任务每秒执行数百个复杂的计算。该计划必须全天候工作。因为我不是一个专业的程序员,我不知道这种程序如何处理内存和CPU,我请求你的帮助。

该计划在本周和周末期间有不同的功能。 我非常了解两种语言,Python和C#。

  1. 我需要这个应用程序很快,所以对于计算我认为c#会更快地处理它们。

  2. 该程序必须每周7天,每天24小时工作,所以我可能会认为一个Python编写的项目包含多个小脚本,这些脚本可以相互调用多个任务永久工作,比Big C#代码更好。

  3. 如何写出最佳方式?

  4. 我正在考虑用伪代码编写它,如

    // 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
        }
    }
    

    解决此问题的最佳方法是什么?这是一个非常大的问题,但欢迎提出任何建议。感谢

    修改 问题是:该程序非常复杂,有数百个函数和计算。我希望它是最快和最低内存消耗。 如何写得最好

1 个答案:

答案 0 :(得分:1)

如果你需要速度,numpy可以帮助你,它真的很快(它基于atlas,blas,lapack)。 我不知道你是否可以在C#中使用它。

如果你有很多计算要做,你应该找到一种方法来存储结果以防万一。此外,您可以找到一种优化使用缓存的方法。否则你可以尝试使用像“mpi”这样的库来使用几台计算机。无论如何,你应该考虑这些点,以便能够扩展。

根据计算成本的不同,python可能是c#的不错选择。如果计算可以使用第三个库完成,那么它并不重要。

但我同意obrok,避免使用混合语言,尽量保持简单。

对于内存,可能使用缓存可能是一件好事,或者您应该将计算减少到较小的部分。研究numpy / scipy函数可以帮到你。