问题标签 [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.
numbers - 随着运营数量的增长,业绩放缓
我有下一个问题。我的代码性能取决于操作次数!怎么会这样?(我在 openSuse 11.1 下使用 gcc v 4.3.2)
这是我的代码:
这是结果日志:
n-time-Gflops (=)
200000 23.00 1.739
205000 24.00 1.751
210000 25.00 1.764
215000 26.00 1.778
220000 27.00 1.793
225000 29.00 1.746
230000 30.00
1.763 235000 32.00 1.726
240000 32.00 1.800
245000 34.00 1.765
250000 36.00 1.736 255000
37.00 1.757
260000 38.00 1.779
265000 40.00 1.756
270000 42.00 1.736
275000 44.00 1.719
280000 46.00 1.704
285000 48.00 1.692
290000 49.00 1.716
295000 51.00 1.706
300000 54.00 1.667
305000 54.00 1.723
310000 59.00 1.629
315000 61.00 1.627
320000 66.00 1.552
325000 71.00 1.488
330000 76.00 1.433
335000 79.00 1.421
340000 84.00 1.376
345000 85.00 1.400
350000 89.00 1.376
355000 96.00 1.313
360000 102.00 1.271
365000 110.00 1.211
370000 121.00 1.131
375000 143.00 0.983
380000 156.00 0.926
385000 163.00 0.909
还有图像,但由于新用户限制,我无法发布它。但这里是对数图。
这种放缓的原因是什么?如何摆脱它?请帮忙!
browser - 计算浏览器何时会变慢
是否可以根据计算机的组件(内存、cpu、显卡等),在系统变慢之前,在一个合理的近似值内计算出浏览器可以打开多少个标签页,到当前打开的平均厚度网页、活动进程和系统范围的机器使用情况(即内存、cpu)?
一个可能的用例可能是向用户展示哪些页面使用的资源比其他页面多,这样她就可以轻松优化性能。
arrays - 大型 perl 数组中的减速
我目前正在运行一个 perl 程序,我必须在其中获取一个 100 万行的文本文件,将其分解为多个块(每个块在 50 到 50,000 行之间),然后对其进行一些计算等。现在,我将所有数据加载到 array1 中。我使用 array2 并使用它来提取我需要的数据块。然后我在阵列 2 上执行我需要执行的操作,然后返回并获取下一组。
示例数据
A,等等,等等
A,等等6,等等7
A,等等4,等等5
乙,废话2,废话2
所以我会把前三个放到数组 2 中,对它们进行排序,然后继续下一组。我的程序开始时运行良好且高效,但之后会出现严重的减速。
50K 需要 50 秒,100k 需要 184 秒,150k 需要 360 秒,200k 需要 581 秒,并且随着程序的继续,它只会呈指数级恶化(500k 行的 4500 秒)
不,我不能为这个项目使用数据库,有什么建议吗?
我已经将我的代码编辑为更类似于下面的答案,并且我有这些时间:
50k = 42, 100k = 133, 150k = 280, 200k = 467, 250k = 699, 300k = 978, 350k = 1313
它并不完全保持线性,按照这种趋势,这个 prog 仍然需要 14000 多秒。我将调查代码的其他部分
rendering - 超线程……让我的渲染器慢了 10 倍
执行摘要:如何在他的代码中指定 OpenMP 应该只将线程用于 REAL 内核,即不计算超线程内核?
详细分析:多年来,我在空闲时间编写了一个纯软件的开源渲染器(rasterizer/raytracer)。GPL 代码和 Windows 二进制文件可从此处获得: https ://www.thanassis.space/renderer.html 它在 Windows、Linux、OS/X 和 BSD 下编译和运行良好。
上个月我介绍了一种光线追踪模式 - 生成的图片质量飙升。不幸的是,光线追踪比光栅化慢几个数量级。为了提高速度,就像我对光栅化器所做的那样,我为光线追踪器添加了 OpenMP(和 TBB)支持 - 以轻松利用额外的 CPU 内核。光栅化和光线追踪都可以轻松地进行线程处理(每个三角形的工作量 - 每个像素的工作量)。
在家里,使用我的 Core2Duo,第二个核心帮助了所有模式 - 光栅化和光线追踪模式都获得了 1.85x 和 1.9x 之间的加速。
问题:当然,我很想看到顶级 CPU 性能(我也“玩”过 GPU,初步 CUDA 端口),所以我想要一个坚实的比较基础。我把代码给了我的一个好朋友,他可以使用一台“野兽”机器,它有一个 16 核、1500 美元的英特尔超级处理器。
他以“最重”模式运行它,光线追踪器模式......
...他的速度是我的 Core2Duo 的五分之一(!)
喘息——恐怖。刚才发生了什么?
我们开始尝试不同的修改、补丁……最终我们弄明白了。
通过使用 OMP_NUM_THREADS 环境变量,可以控制产生多少 OpenMP 线程。随着线程数从 1 增加到 8,速度也在增加(接近线性增加)。我们越过 8 的那一刻,速度开始下降,直到它急剧下降到我的 Core2Duo 速度的五分之一,当所有 16 个核心都用完时!
为什么是8?
因为 8 是真正的核心数。其他 8 个是……超线程的!
理论:现在,这对我来说是个新闻——我已经看到超线程在其他算法中的帮助很大(高达 25%),所以这是出乎意料的。显然,即使每个超线程内核都有自己的寄存器(和 SSE 单元?),光线追踪器也无法利用额外的处理能力。这让我想到...
饥饿的可能不是处理能力 - 它是内存带宽。
光线追踪器使用包围体层次结构数据结构来加速光线与三角形的交点。如果使用超线程内核,那么一对中的每个“逻辑内核”都试图从该数据结构中的不同位置(即内存中)读取 - 并且 CPU 缓存(每对本地)被完全颠簸。至少,这是我的理论——欢迎提出任何建议。
所以,问题是: OpenMP 检测“核心”的数量并产生与之匹配的线程——也就是说,它在计算中包含了超线程“核心”。就我而言,这显然会在速度方面导致灾难性的结果。有谁知道如何使用 OpenMP API(如果可能,可移植)只为 REAL 内核生成线程,而不是超线程内核?
PS 代码是开放的 (GPL) 并且可以在上面的链接中找到,请随意在您自己的机器上复制 - 我猜这将发生在所有超线程 CPU 中。
PPS 请原谅帖子的长度,我认为这是一种教育经验并想分享。
windows - MS-Windows 调度程序控制(或其他)——在较慢的 CPU 上测试应用程序性能?
是否有一些工具可以控制 MS-Windows(在我的情况下为 XP-SP3 32 位)调度程序,一个目标应用程序(我想测试),就像它在较慢的 CPU 上运行一样运行. 假设我的物理主机是 2.4GHzv 双核,但我希望应用程序像运行在 800MHz/1.0GHz CPU 上一样运行。
我知道一些这样的程序可以让旧的 DOS 游戏运行得更慢,但是 AFAIK,它们采用消耗 CPU 周期的方法来使应用程序挨饿。我不想要这样的事情,也想对时钟有更高的精度控制。
iphone - iPhone - 防止由于将图像设置为 UIImageView 而导致减速
我有一个方法可以获取从 iPhone 相机拍摄的图像,将其放入 UIImageView,然后调用另一个自定义绘图方法到自定义 UIView 中。
我注意到,当我从 iPhone 4 的前置摄像头拍摄照片时,自定义 UIView 绘图正常且流畅。从后置摄像头拍摄照片时,自定义绘图是生涩的,有时它甚至不显示它必须显示的所有“帧”。
知道我的自定义动画必须在图像显示到 UIImageView 时开始,我该如何以具体的方式防止这些混蛋?
评论时self.photoShoot.image = pickedImage;
,无论使用什么相机,都不再混蛋。
注意:UIImageWriteToSavedPhotosAlbum
调用可能不是原因,因为是否将其放入代码中不会影响问题。
navigation - 使用 IIRF 重写 URL 使 dokuwiki 变慢
编辑:在这种情况下,IIRF.ini 代码不是问题,dokuwiki 的性能问题实际上与权限有关,并且 URL 重写的引入不是问题的原因。
在我使用 IIRF 集成 URL 重写之前,我有一个新的 Dokuwiki 实例(即几乎是空的,未使用),它运行得非常好。
现在它的运行速度明显变慢了——在页面之间导航需要几秒钟,而之前它是“活泼的”(立即的)。
我遵循了在此处实施 IIRF 的说明,这基本上涉及将“IIRF.ini”文件添加到站点根目录,并按照上面链接的站点上的说明更新“conf/local.php”文件(从标题下复制的代码“离子 Isapi 重写过滤器”)。
因此,澄清一下,URL 重写是有效的;但它导致了浏览 wiki 的速度明显变慢。如果有人可以提供建议以再次加快速度,我将不胜感激!
这是我的“IIRF.ini”文件的内容:
asp.net - 为什么页面处理的 AspNetSessionData 阶段会使我的页面延迟 20 多秒?
我有一个使用带有“InProc”会话处理的 ASP.NET 的 Web 应用程序。通常情况下,一切正常,但是每天运行几百个请求所需的时间比正常情况要长得多。在 IIS 日志中,我可以看到这些页面(通常需要 2-5 秒才能运行)运行了 20 多秒。
我在详细模式下启用了失败的请求跟踪,发现延迟发生在 AspNetSessionData 部分。在下面显示的示例中,AspNetSessionDataBegin 和 AspNetSessionDataEnd 之间有 39 秒的间隔。
我不确定下一步该怎么做。我找不到造成这种延迟的任何原因,也找不到更多可以启用的日志记录功能来告诉我这里发生了什么。有谁知道为什么会发生这种情况,或者对我可以采取哪些其他步骤来查找问题有任何建议?
我的应用程序通常为每个用户在会话中存储 1-5MB,主要是用于搜索的缓存数据。服务器有足够的可用内存,并且只运行大约 50 个用户。
css - 额外的、未使用的 CSS 定义会减慢浏览器的速度吗?
在与许多 CMS 合作并剪切了许多 HTML 设计之后,当我看到SilverStripe 对 CSS 的使用时,我被转换了。
<div>
从本质上讲,根据您所在的页面更改标签中的 ID 将是一种浪费,而更改<body>
标签的类和 ID 将是更改特定页面的一种更简单的方法。
在以下问题中,一位同事对此类定罪提出质疑:
在特定网站上,我们有各种结构相似的页面。有些可能包含特殊形式,有些可能不包含。根据我们所在的小节,所有特殊表格都应具有不同的背景图像。
由于声称“额外的 CSS 行会减慢body.onLoad
s”,我在 CSS 中编写所有背景期望的论点被拒绝了。
任何人都可以在各种案件之间引用证据吗?案例包括: 编码错误的 CSS 和编码良好的 CSS,但每个页面上都有各种未使用的 CSS?
(特别是关于我的问题,谁能解释我的不安?假设图像会在那里并且基于数据库中的变量自动生成内联 CSS(或基于标题部分的样式标签),我感到不舒服。)
ubuntu - 用于开发的最快 Ubuntu 版本
我正在使用 Ubuntu 进行开发。今天我安装了新的 11.04。启动时间几乎快两倍/三倍。此外,我并不真正需要所有精美的图形,因为我想专注于开发 Web 应用程序和桌面/控制台应用程序。
我现在读到,随着每个版本的发布,Ubuntu 都会变慢一点,许多人声称它臃肿。根据您的经验,哪个版本的 Ubuntu 最快?
谢谢,弗兰克
(PS:如果你有一个比 Ubuntu 更好的操作系统的想法,请告诉我。Ubuntu 对我的优势之一是 Synaptic 的集成,它为我设置了一切,所以我不必浪费时间进行配置.)