plot - 赋予 CPU 更多能力在 Octave 中绘图

标签 plot cpu gnuplot octave time-complexity

我在 Octave 中创建了这个绘制分形的函数。现在,绘制我计算出的所有点需要很长时间。我已经使我的函数尽可能高效,我认为可以使其绘制速度更快的唯一方法是让我的CPU完全专注于函数或以某种方式告诉它应该专注于我的绘图。

有什么办法可以做到这一点还是这真的是极限?

最佳答案

要确定绘图消耗了多少 CPU,请运行绘图,然后在单独的窗口中(假设您在 Linux/Unix 上)运行 top 命令。 (对于 Windows,启动 Task Master 并切换到“进程”选项卡,单击 CPU 标题按 CPU 排序)。

(您问题标签上的 Octave 翻转描述表明 Octave 是一种脚本语言。我希望它调用 gnuplot 来创建绘图。将其视为最高 CPU 消耗者) .

您应该看到您的 Octave/gnuplot cmd 位于列表顶部附近,并且对于 top 有一个标记为 %CPU (或类似)的列。这将显示该进程消耗了多少 CPU。

我希望看到该进程消耗 95% 或更多的 CPU。如果您发现该数字明显较低,那么您需要检查该数字下方的进程,它们是否消耗剩余的 CPU(某种病毒扫描(在 PC 上)、数据库或服务器?)?如果竞争程序是问题所在,那么您必须决定是否可以等到它/它们完成,或者您可以杀死它们并稍后重新启动。 (对于 lunix,请使用 kill -15 pidkill -11 pid。仅使用 kill -9 pid 作为最后的手段。在此处搜索有关尝试 kill -$n 的正确顺序的文章)

如果没有竞争进程,并且 octave/gnuplot 使用率低于 95%,那么您必须找到替代工具来查看是什么阻碍了进程。 (这不太可能,整个绘图过程的某些部分可能受磁盘 I/O 或网络 I/O 限制)。

因此,这取决于您当前经历的时间尺度与您“想要”经历的时间。

您的系统有多个 CPU 吗?然后,您需要研究 Octave/gnuplot 文档,看看它是否支持指示“使用 $n 可用 CPU 进行处理”的开关。 (或者找到一个支持使用 $n 多个 CPU 的绘图程序)。

实际上,如果您的进程现在需要 10 分钟,并且您可以通过消除竞争进程,从 60% 增加到 90%,即 CPU 增加 50%,但只会将其减少到 5 分钟(不确定) ,也许更少,数学不是我的强项;-))。能够将任务划分为 5-10-?? CPU 将是实现更快周转时间的最可靠途径。

因此,要进一步解决这个问题,您需要使用一些数据点编辑您的问题。你的剧情需要多长时间?它正在处理的文件有多大。您正在做的绘图是否有一些特别数学密集的内容?预处理的数据文件可以加快计算速度吗?另外,如果 top 的结果未显示 gnuplot 以 99% CPU 运行,请编辑您的帖子以显示 top 输出,这将有助于我们理解您的问题。 (粘贴您的 top 输出,用鼠标选择它,然后使用输入框顶部的格式化工具 {} 保留格式并避免出现输出换行在您的帖子中)。

IHTH。

附注通过滚动鼠标,记下您为问题分配的每个标签的关注者数量。通过包含您正在使用的操作系统的标签以及与性能测量/测试相关的标签,您可能会在您的问题上获得更有用的“眼睛”(转到标签选项卡并输入各种术语以查看您有多少关注者)正在获取。S.O. 礼仪的一点是仅指定 1 种编程语言(如果适用),这也可能适用于操作系统。)

关于plot - 赋予 CPU 更多能力在 Octave 中绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13983928/

相关文章:

python - 在python中以不同颜色绘制bool-int散点图

java - 如何让 Java 使用机器上的所有 CPU 能力?

python - 如何在 linux 上的 python 中使用 %cpu 在给定时间内杀死特定进程?

python - 如何全局设置 matplotlib 图的 alpha 值

r - 如何在 R 中创建(100%)堆叠直方图?

r - 自定义李克特图中条形图的宽度

gnuplot - 如何增加 gnuplot 中 ylabel 的字体大小?

Python - 核心速度

c - 傅里叶级数系数​​ gnuplot

r - 如何在 R 或 gnuplot 中应用功率拟合趋势线?