C# 保留所有处理器资源、核心和缓存

C# 保留所有处理器资源、核心和缓存,c#,java,c++,multithreading,caching,C#,Java,C++,Multithreading,Caching,我是一名计算机系的学生,自己学习算法。我现在正在研究的算法需要在一台功能强大的PC上运行大约两个月才能产生任何有用的结果,因此处理器效率会产生很大的影响。处理器的大部分时间将用于运行具有不同初始值的子进程 理想情况下,我希望在不同的线程上运行其中几个子进程,每个线程保留一个核心和一部分缓存大约一个小时。在那一小时之后,我可以让操作系统运行其他进程,并检查用户输入。一旦完成,我想再保留一个小时的所有资源 有没有一个简单的方法可以做到这一点,如果不值得,性能提高5%-10%值得编程时间翻倍,如果值得

我是一名计算机系的学生,自己学习算法。我现在正在研究的算法需要在一台功能强大的PC上运行大约两个月才能产生任何有用的结果,因此处理器效率会产生很大的影响。处理器的大部分时间将用于运行具有不同初始值的子进程

理想情况下,我希望在不同的线程上运行其中几个子进程,每个线程保留一个核心和一部分缓存大约一个小时。在那一小时之后,我可以让操作系统运行其他进程,并检查用户输入。一旦完成,我想再保留一个小时的所有资源

有没有一个简单的方法可以做到这一点,如果不值得,性能提高5%-10%值得编程时间翻倍,如果值得,但很困难,有什么资源可以解决这个问题


<> P>我熟悉C++java,如果需要的话,可以做C++,但是有很多方法可以把线程的优先级设置为高,也许你应该考虑不同的总体策略。您的问题描述意味着您将进行多个独立的计算,以使一个子流程具有不同的初始值。也许你应该考虑将计算分解成子工作单元,将初始值和结果存储在数据库中…并招募其他学生在空闲时间在他们的计算机上运行这些子工作单元


对于您使用的计算机,请尝试制作多线程。通过多核和超线程,许多笔记本电脑具有相当于8个CPU的CPU。

这个问题是不明确的。让我解释一下关于加速代码的一些选项,因为您最关心的似乎是这一点

如果您有多核处理器,请使用C 4.0附带的并行编程,或使用MPI或OpenMP 有许多并行化技术可以用来提高处理速度,如平铺等,这取决于问题 确保每个线程或进程都是独立的,比如将日志文件分开等,这样每个线程都可以自己运行。 确保所有线程都具有高优先级 如果内存超过4GB,请将程序设置为64位应用程序 增加系统时钟周期 增加进程的RAM内存,例如,如果您有4GB,进程并没有使用所有4GB,则应根据您的操作系统提供控制选项。 如果您知道任何进程,如反病毒,请使用此限制其cpu访问 使用缓存分析并尝试改进代码。 这里有一些超级计算中心,如果你需要更多的能量,请联系他们并请求集群节点——你可能会很幸运!
没有现代的CPU,缓存由用户模式软件控制,即使不是这样,在进入操作系统或类似想法时尝试禁用缓存来提高性能也不会有任何运气

类似地,除了为每个进程/线程使用处理器亲缘关系之外,锁定CPU资源没有任何意义

在现代系统中,只要系统不运行xgears或类似屏幕保护程序,操作系统的开销就很小。关闭该选项,应用程序将获得99.9%的CPU性能


如果您希望提高系统的性能,您最好查看编译器生成的代码,选择对您的问题有效的算法,等等。显然,使用探查器来识别应用程序的热点

你的目标操作系统是什么?如果机器处于静止状态,那么这样做的改进可能会远远低于1%。你确定要在一个问题中询问所有这些语言吗??这太公然了:C、java和C++是非常不同的,并且有各种各样的技术来处理它们的多线程。