Q1.编写不消耗CPU但仍能获得出色性能的代码的最佳实践是什么?这个问题非常通用.我在这里寻求的是列出用于不同环境的不同实践?除了进程监视器/任务管理器之外的调试技巧
编辑:我不是在谈论IO绑定进程.我说的是CPU绑定过程.但是,在这里我不希望我的进程继续占用CPU.如果我有一台4核机器,并且如果我在一个过程中运行四个简单的循环,则CPU消耗量最多可达到400%,直到应用程序/进程运行.
我在这里寻求一些关于这个话题的经验,每个人都会遇到一些时间或其他.例如,一旦应用程序在Windows上占用CPU,我就会调试它,因为它不断循环搜索不存在的文件.
如何以两种不同的CPU绑定应用程序顺利运行(给出良好响应)的方式编写程序?
更新: 建议:
写好干净的代码,然后配置您的应用程序,然后进行优化.(感谢提示)
重写/重新设计/重构代码比分析和修复代码更容易.
使用分析器调试您的应用程序
对于长时间等待的线程,请勿使用自旋锁
算法选择
这些建议对初学者理解概念有很大帮助.
我的应用程序由四个选项卡组成:一个webview,三个带有一些text/edittext的视图,...问题是我的app消耗了大量的CPU,我不明白为什么,其中一个主要问题是当应用程序是onPause(用户使用主页按钮),我的应用程序仍然使用CPU(大约20%,甚至更多!)并且耗费电量.
我不明白用了那么多CPU,所以我有两个问题:
非常感谢 !
编辑:
似乎我的webview消耗了CPU.如何在onPause期间停止此webview而不破坏webview对象?
当我运行我在一台机器上编写的应用程序,Windows 7 Professional 32位SP 1时,它运行得很好并且在系统中使用100%的CPU.
但是,当我在Windows Server 2008上运行相同的应用程序时,我没有看到100%的CPU使用率.
为什么它不使用100%的CPU,我怎么能这样做呢?
我有一个JTable和它的一个列应该显示一个图像; 我压倒了这样做的getTableCellRendererComponent方法DefaultTableCellRenderer.但问题是,当图像不是 Null&cell正在显示时,这个方法被反复调用(就像在无限循环中调用一样)并使用100%的CPU!(当图像Null没有问题!).
问题是什么?
我的扩展课程是:
public class imageCellRenderer extends DefaultTableCellRenderer{
@Override
public void validate() {}
@Override
public void revalidate() {}
@Override
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {}
@Override
public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if(isSelected) {
this.setBackground(table.getSelectionBackground());
this.setForeground(table.getSelectionForeground());
}else {
this.setBackground(table.getBackground());
this.setForeground(table.getForeground());
}
this.setIcon(null);
Image Scaled;
ImageIcon tmp; …Run Code Online (Sandbox Code Playgroud) 如何在Mac OS X中从线程本身获取线程的cpu时间?对于linux,我所做的getrusage(RUSAGE_THREAD, &ru)只是这个解决方案不适用于Mac OS X.
我遇到了这个问题,但我不知道如何根据我的目的调整它(我不熟悉Mac OS X的内部.我甚至不确定pthread thread == mach thread).
这个问题"如何在C#中获得CPU使用率?" 显示了在.NET中获取计算机当前CPU使用率(%)的一些方法.
由于CPU使用率频繁波动,我认为当前的CPU使用率通常不是计算机繁忙程度的良好指标(例如,用于调度或负载平衡目的).有没有一种有效的方法来获得最后x分钟的平均CPU使用率,例如最后5分钟?
我正在考虑可以由负载平衡或调度模块调用的方法GetAverageCpuUsage(int period).
对不起,如果这是一个愚蠢的问题或明显,如果是这样我将删除它.我正在搜索,我无法找到一个定义的答案.它有:PHP,Ruby或Java等高级语言都被解码为汇编,由CPU执行?
我的Windows系统有8个核心.
当我使用8个CPU和我的MPI:时mpiexec.exe -n 8,我的8个可用处理器中的所有处理器都忙于任务管理器,这是有道理的.
当我使用2个内核时:mpiexec.exe -n 2我希望只有2个内核应该忙,但事实并非如此,而且我的CPU占用率不规则分布在8个内核上.
预期会有这种观察吗?
如果在C中使用void函数与返回任意类型的函数(比如int),int函数会占用比void函数更多的CPU周期吗?
例:
int a, b = 1, c = 2;
void f()
{
a = b + c;
}
int g()
{
a = b + c;
return a;
}
Run Code Online (Sandbox Code Playgroud)
我的常识告诉我,返回是一个动作,所以它应该花费一些CPU时间,但我没有适当的深层基础知识,我也不知道汇编程序是否能够自信地回答这个问题.谷歌搜索也没有成功.
编辑:我的兴趣纯粹是学术性的,我不希望通过使用void与int函数获得任何明显(或甚至接近)的性能.
为什么当我们使用unity3d构建游戏场景时,它会使用100%的CPU?
我的意思是,这不是一个包含许多对象和事物的场景,也不是一个空的场景,在这两种情况下,CPU使用率均为100%。
为什么?
我该如何减少呢?
我想减少CPU使用率的原因是:我想exe在专用服务器上运行多个游戏,以统一制作多人游戏。UNET在这种情况下,除了一些功能之外,我什么syncvars都没有,甚至没有更新功能……我只想让此exe文件使用更少的CPU来更好地运行并提高性能。
是否可以减少CPU使用率?