问题标签 [slowdown]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 为什么迭代元素数组乘法在numpy中减慢?
下面的代码重现了我在当前实现的算法中遇到的问题:
问题是,经过一些迭代后,事情开始逐渐变慢,直到一次迭代花费的时间是最初的数倍。
放缓的情节
Python 进程的 CPU 使用率始终稳定在 17-18% 左右。
我在用着:
- Python 2.7.4 32位版本;
- 带有 MKL 的 Numpy 1.7.1;
- 视窗 8。
performance - 随着时间的推移,FlashBuilder 中内置的应用程序运行速度越来越慢
我有一个内置在 FlashBuilder 中的应用程序,它是用 actionscript 编写的,当我启动该应用程序时,它的响应速度非常快且运行流畅。然而,随着时间的推移,在与应用程序中的某些滑块进行交互后,程序会慢慢变得越来越无响应且越来越不流畅。例如,当将滑块的值从 0 更改为 100 时,它将使用结束值 100 之间的许多值更新滑块。但是,在应用程序运行一段时间后,当采取相同的操作 0 到 100 并移动滑块时以从 0 到 100 的相同速率,我可能只会得到少数值而不是 50。
有谁知道为什么会发生这种情况以及我应该检查什么以减少这种性能泄漏?
c++ - 指向二维数组中元素的指针会减慢代码速度
我有这段代码可以访问有关“x”和“y”轴上的点的一些信息。此信息稍后用于在屏幕上绘制一些点。这就是代码的工作方式:
切入正题!
好吧!所以最近我想到这样访问数组会减慢我的代码速度。据我所知,每当您访问数组中的元素时,处理器都会获取数组的基址,然后将元素的大小乘以用于查找指定元素地址的索引。我的想法是,如果我多次要求处理器执行此操作,而不是仅仅创建一个指向地址的指针,然后使用它来处理我的元素,那么它会减慢我的代码速度。所以我将代码重写为以下内容:
这个想法对我来说似乎很好,但问题是第一段代码比第二段代码快!所以我的问题是:为什么第一段代码比第二段代码快?
对于不喜欢阅读的人:
为什么第一段代码比另一段快?第一个需要 0.0919 秒才能完成,而第二个需要 0.226 秒。
这也是程序集如何处理指针的副本:
除了这部分代码外,其余部分相同。
canvas - matplotlib 和 PyQt:动态图形在多次加载后运行缓慢或看起来很乱
编辑:
我决定重写它以包含我的问题的工作示例。虽然这很长,但我希望它在未来对许多人有用。
代码说明
我有一个QMainWindow
带有“显示”按钮的工具栏的基本工具。主窗口还为图形创建画布matplotlib
并将其设置为中央小部件。
当用户点击“显示”按钮时,通过调用 的drawGraph()
方法显示一些数据GraphCanvas
。在实际程序中,数据会根据用户在单击按钮之前选择要显示的内容而变化。该方法resizeEvent()
基本上再次绘制图形以适应新的中心小部件大小。
该drawGraph()
方法创建了四个图,其中第一个具有数据,因此它是可见的。最后两行绘制图形并将静态背景保存到变量self.background
中。
当用户在画布上移动鼠标时,首先加载背景。我想保存和加载静态背景以使图形绘制得更快。之后,最后三个图动态获取它们的数据,并显示为 3 条随鼠标光标移动的垂直线。
问题
1)随着您不断点击“显示”按钮,图形会逐渐变慢。如果您尝试敲击它 50 次并在图形上移动鼠标,您会发现垂直线更加滞后。当真实图形中有更多的动态图和注释等时,只需单击几下,程序就会变得无法使用。
更聪明的人可能会说出为什么会发生这种减速,但我猜以前加载的图形保存在内存中的某个位置,并且可能绘制在新创建的图形下方。而且堆栈只会越来越大。
2)启动程序后立即显示该图。没什么大不了的,但在单击按钮之前,我更喜欢那里的空白区域。
尝试了一个解决方案
我尝试的是将这两行从def __init__(self)
ofclass MainWindow
移到def showButtonClicked(self)
:
所以它现在看起来像这样:
所以我只有在按下按钮后才创建了这个图形。这解决了减速问题,但带来了另一个问题。现在,当您点击“显示”按钮并在画布上移动鼠标时,会加载已保存的图形背景,但原始尺寸为 5 x 4 英寸,我们一团糟。所以基本上背景不是以绘制图形的大小保存的,而是以创建它的大小保存的。
但是,如果我调整窗口大小,一切正常。但是下次我单击“显示”按钮时,问题再次出现,我需要再次调整窗口大小。
我需要的
无论单击“显示”按钮多少次,我都需要使这个东西流畅地工作并且看起来应该是它应该的样子。另外,我希望在第一次单击“显示”按钮之前没有显示该图形,并且从那时起直到程序关闭为止都可见。
当单击“显示”按钮时,我会遇到一些技巧,例如将窗口大小调整一个像素,但这不是正确的方法,是吗?
任何想法和建议都非常受欢迎。谢谢你。
php - 为什么方法调用会减慢一切?
我有一个带有新对象的小循环。
如果我遗漏了“坏线”,那么我会得到以下结果:
(1 / 3000) 1.7ms (2 / 3000) 0.7ms (3 / 3000) 2.4ms (4 / 3000) 1.9ms (5 / 3000) 0.7ms (6 / 3000) 0.7ms (7 / 3000) 3.2ms ( 8 / 3000) 2.1ms (9 / 3000) 0.7ms (10 / 3000) 0.7ms (11 / 3000) 0.7ms (12 / 3000) 0.7ms (13 / 3000) 0.7ms ... (2995 / 3000) 0.6毫秒 (2996 / 3000) 0.5 毫秒 (2997 / 3000) 0.6 毫秒 (2998 / 3000) 0.7 毫秒 (2999 / 3000) 0.5 毫秒 (3000 / 3000) 0.5 毫秒
但如果我不这样做,我会得到这个:
(1 / 3000) 1.5ms (2 / 3000) 0.6ms (3 / 3000) 6.6ms (4 / 3000) 2.3ms (5 / 3000) 1.3ms (6 / 3000) 1.2ms (7 / 3000) 3.7ms ( 8 / 3000) 2.3ms (9 / 3000) 1.4ms (10 / 3000) 1.3ms (11 / 3000) 1.3ms (12 / 3000) 1.5ms (13 / 3000) 1.2ms ... (2995 / 3000) 14.2毫秒 (2996 / 3000) 14.3 毫秒 (2997 / 3000) 13.8 毫秒 (2998 / 3000) 13.9 毫秒 (2999 / 3000) 14.2 毫秒 (3000 / 3000) 14.7 毫秒
这就是这个糟糕的方法的样子:
我没有想法……不要问未设置的问题。如果新物体之后没有被破坏,它们也会产生同样的影响。
PHP 版本:5.3.2-1ubuntu4.20(这是我唯一可以使用的版本。我无法升级/更新。在 Plesk 下安装更新版本非常困难,我这可能无法解决我的问题。)
谢谢 :)
glsl - GLSL 片段着色器减速
最近几天我一直在写一个片段着色器,它将处理我正在制作的 2d 游戏的背景。然而,今天我注意到我的云渲染在渲染时非常慢(从 3000 到 300 fps)。
起初我以为是因为我在生成云时做了一些愚蠢的事情,但经过一些实验后,我注意到只有在将云添加到 gl_FragColor 时才会出现减速。计算它们似乎对性能没有任何影响。
我生成这样的云:
我用这个将云添加到“图像”的其余部分
只有当我这样做时才会出现减速:
如果删除云生成的细节部分,我还将 FPS 从 300 翻倍到 600
是不是我做错了什么,或者当我做这样的事情时,着色器的这种性能密集型是很自然的。
作为参考,这是整个着色器
可以在这里找到一个没有时间的工作版本,以了解着色器的实际作用
c++ - C++ 多线程和亲和性
我正在为我的应用程序编写一个简单的线程池,我在双核处理器上进行了测试。通常它运行良好,但我注意到当其他进程使用超过 50% 的处理器时,我的应用程序几乎停止。这让我很好奇,所以我决定重现这种情况并创建辅助应用程序,它只是运行无限循环(没有多线程),占用 50% 的处理器。当辅助程序运行时,多线程应用程序几乎像以前一样停止(处理速度从每秒 300-400 个任务下降到每秒 5-10 个任务)。但是,当我将多线程程序的进程亲和性更改为仅使用一个内核(辅助仍然使用两者)时,它开始工作,当然最多使用剩余 50% 的处理器。当我在我的应用程序中禁用多线程(仍在处理相同的任务,但没有线程池)时,它就像魅力一样工作,没有任何辅助设备减速,它仍在运行(这就是两个应用程序在两个内核上运行时应该表现的方式)。但是当我启用多线程时,问题又回来了。
我制作了特殊的代码来测试这个特定的线程池:
标题
和.cpp
它是如何测试的:
我已经在 Win7 64 上使用 mingw 和 gcc 4.8.1(从这里)和 Visual Studio 2012 (VC11) 构建了这段代码,都在调试配置上。
使用上述编译器构建的两个程序的行为完全不同。
a) 使用 mingw 构建的程序比在 VS 上构建的程序运行得快得多,因为它可以占用整个处理器(系统显示此过程几乎 100% 的 CPU 使用率,所以我不认为 mingw 偷偷将亲和力设置为一个核心)。但是当我运行辅助程序(使用 50% 的 CPU)时,它会大大减慢(大约几十倍)。在这种情况下,主程序和辅助程序的 CPU 使用率约为 50%-50%。
b) 使用 VS 2012 构建的程序,当使用整个 CPU 时,甚至比 a) 速度慢(当我设置 task_size = 1 时,它们的速度相似)。但是当辅助程序运行时,主程序甚至占用了大部分 CPU(使用率约为 66% 主程序 - 33% 辅助程序),因此导致的减速几乎不明显。
当设置为仅使用一个核心时,两个程序都明显加快了速度(大约 1.5 - 2 倍),并且 mingw 一个不再容易受到竞争的影响。
嗯,现在我不知道该怎么办。我的程序在由两个不同的工具集构建时表现不同。这是我的代码中的一个缺陷(假设是真的),还是与 c++11 有问题的编译器有关?
mysql - MySQL 查询中使用 groupby 和 orderby 的性能问题
1) 使用第一个查询...大约需要 23 秒
目前我修改了查询..这大约需要 9 秒
我不确定要做什么?我希望这个查询很快..我试图索引 rid 和 id 仍然使查询变得更糟。
这是表的详细信息
mza_movie_upload
mza_movie_statics
asp.net - 数据 uri 减慢页面加载速度
我在网站的个人资料页面上使用数据 uri 作为头像图片。(我正在使用 asp.net)个人资料网站正在快速打开,但是当我点击个人资料页面上的链接时,chrome 在左下角显示上传消息,并且正在上传减缓。我无法理解个人资料页面上上传的内容。我还使用配置文件页面的 ispostback 属性控制页面加载。当我删除头像页面加载速度很快。
所以,我的问题是我认为网站正在尝试在每个页面事件上上传数据 uri 图像,因此它会减慢页面速度。但是为什么要上传我不明白。
个人资料页面代码:
当我单击个人资料页面上的按钮时,母版页在下方,它调用editprofile页面,但速度很慢:
EditProfile 页面代码:
mysql - MySQL 错误查询会减慢整个服务器的速度
有时当我提交一个长查询并在它完成之前杀死线程时,整个服务器变慢,即使在系统完全重新启动之后,mysql 的进程列表中也没有显示任何内容......即使我停止 MySQL服务。我正在使用 Windows Server 2008 R2 和 Mysql 5.5,MySQL 可能已经启动的任何操作系统级进程在 MySQL 停止后继续工作吗?
谢谢!