我在 Octave 中制作了这个函数来绘制分形图。现在,绘制我计算的所有点需要很长时间。我已经使我的函数尽可能高效,我认为我可以让它更快地绘制的唯一方法是让我的 CPU 完全专注于函数或以某种方式告诉它应该专注于我的情节。
有没有办法我可以做到这一点,或者这真的是极限吗?
我在 Octave 中制作了这个函数来绘制分形图。现在,绘制我计算的所有点需要很长时间。我已经使我的函数尽可能高效,我认为我可以让它更快地绘制的唯一方法是让我的 CPU 完全专注于函数或以某种方式告诉它应该专注于我的情节。
有没有办法我可以做到这一点,或者这真的是极限吗?
要确定你的绘图消耗了多少 CPU,运行你的绘图,然后在一个单独的窗口中(假设你在 Linux/Unix 上),运行top
命令。(对于 Windows,启动任务主控并切换到“进程”选项卡,单击 CPU 标题以按 CPU 排序)。
(您问题标签上的 Octave 翻转描述说 Octave 是一种脚本语言。我希望它会调用gnuplot
来创建绘图。将其视为最高的 CPU 消耗者)。
您应该看到您的 Octave/gnuplot cmd 位于列表顶部附近,并且top
有一列标有%CPU
(或类似)。这将显示该进程消耗了多少 CPU。
我希望看到该进程消耗 95% 或更多的 CPU。如果您看到这个数字明显较低,那么您需要检查下面的进程,它们是否正在消耗剩余的 CPU(某种病毒扫描(在 PC 上),还是数据库或服务器?)?如果一个竞争程序是问题所在,那么您必须决定是否可以等到它/它们完成,或者您可以杀死它们并稍后重新启动。(对于 lunix,请使用kill -15 pid
或kill -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。
PS 请注意您通过滚动分配给问题的每个标签的关注者数量。通过包含您正在使用的操作系统的标签以及与性能测量/测试相关的标签,您可能会在您的问题上获得更有用的“眼睛”(转到标签选项卡并输入各种术语以查看您有多少关注者'重新获得。SO 礼仪的一点是只指定一种编程语言(如果合适的话),这也可能适用于操作系统。)