问题标签 [processing-efficiency]

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.

0 投票
3 回答
165 浏览

php - 我刚刚在 PHP 中编写了一个随机数生成器,您认为这可以如何改进?

我正在为一个客户工作,他希望生成格式为 [char][int][int] 的代码,如 T56、N78、J89 等...... char 必须为大写。

作为一个快速的人,我写了这个函数,因为我发现它最简单

但我一直在想,还会有许多其他有效的解决方案。上面这个只是工作,但我更注重效率,因为我需要生成大量这样的代码。

有什么更好的起点!

0 投票
4 回答
22398 浏览

sql - SQL 通配符搜索 - 效率?

LIKE最近,关于使用和通配符搜索 MS SQL 数据库的最有效方法一直在争论。我们使用%abc%%abc和进行比较abc%。有人说过,您应该始终在术语末尾使用通配符 ( abc%)。因此,根据他们的说法,如果我们想找到以“abc”结尾的东西,使用 `reverse(column) LIKE reverse('%abc') 是最有效的。

我使用 SQL Server 2008 (R2) 设置了一个测试来比较以下每个语句:

CLMASTER 拥有大约 500,000 条记录,大约有 7,400 个地址以“Street”结尾,大约 8,500 个地址中有“Street”,但不一定在结尾。每次测试运行需要 2 秒,它们都返回了相同数量的行,除了%STREET%,它发现了额外的 900 左右的结果,因为它选择了最后有公寓号码的地址。

由于 SQL Server 测试在执行时间上没有显示出任何差异,我转而使用 PHP,在其中使用以下代码,在每个语句中切换,以快速运行多个测试:

此测试的结果与在 SQL Server 中进行测试时的结果一样模棱两可。

%STREET在 166.5823 秒内完成(每个查询平均 0.3331),平均 0.0228 中找到 500 个结果。

%STREET%在 149.4500 秒内完成(每个查询平均 0.2989),平均 0.0177 找到 500 个结果。(每个结果的时间更快,因为它在相似的时间内找到比其他结果更多的结果。)

reverse(ADDRESS) like reverse('%STREET')在 134.0115 秒内完成(每个查询平均 0.2680),平均在 0.0183 秒内找到 500 个结果。

reverse('TREETS%')在 167.6960 秒内完成(每个查询平均 0.3354),平均 0.0229 找到 500 个结果。

我们预计此测试将显示%STREET%总体上最慢的,而实际上它是运行速度最快的,并且返回 500 个结果的平均时间最好。虽然建议reverse('%STREET')的整体运行速度最快,但返回 500 个结果的时间稍慢。

额外的乐趣:当我们运行测试时,一位同事在服务器上运行分析器,发现使用双通配符会显着增加 CPU 使用率,而其他测试之间的差异在 1-2% 以内。

是否有任何 SQL 效率专家可以解释为什么在搜索字符串的末尾使用通配符比在开头更好的做法,以及为什么在字符串的开头和结尾使用通配符搜索比使用通配符更快刚开始?

0 投票
1 回答
1287 浏览

php - 有效限制 PHP 中每分钟的点击次数(阻止网页抓取或复制机器人)

我面临机器人从我的网页上复制所有内容的问题(我经常尝试更新)。

我试图禁止它们,或者混淆代码以使其更难复制。然而,他们找到了一些方法来克服这些限制。

我想尝试限制每分钟的点击次数(或 X 次,不一定是分钟),但使用验证码来克服这些限制。例如,如果您在过去 5 分钟内请求了超过 10 个页面,则需要使用验证码证明您是人类。因此,如果用户是合法用户,您将能够继续上网。

我只想在内容页面中执行此操作(以更有效地执行此操作)。有想过MemCached,但是由于我不欠服务器,所以不能用。如果我使用的是 Servlets,我会使用 HashMap 或类似的东西,但由于我使用的是 PHP,我仍在尝试寻找解决方案。

我不认为 MySql(或数据库)是一种解决方案,因为我每秒可以点击很多次。而且我应该在几分钟的旧请求后删除,这会产生很多不必要的和低效的流量。

有任何想法吗?

总结: 如果我在网页的某个部分每分钟获得太多点击,我想在 PHP 中有效地使用 Captcha 来限制它。例如,如果您在过去 5 分钟内请求了超过 10 个页面,则需要使用验证码证明您是人类。

0 投票
2 回答
829 浏览

c++ - 修改部分数组的最快方法

我想对 bool 数组的连续元素块执行 not 操作,然后读回完整的数组。我正在使用以下代码来执行操作。

这工作正常,但我正在尝试提高程序的速度。有没有更好的方法来执行相同的操作?

0 投票
4 回答
671 浏览

c++ - 标准容器(如 std::vector)的高效/更快复制

对于自定义使用,我继承std::vector了一个自定义class Vector. 对于我的要求,这种public 继承是可以的

一个目的是避免多次复制向量数组,所以我决定这个自定义类是基于“所有权”的。

这是为 C++03 实现的方式:

我是否违反了任何语言规则/功能/约定?这段代码有什么不好的吗?

编辑:我在下面以答案的形式添加了我的新方法(这是它的工作演示)。

0 投票
1 回答
611 浏览

ruby - 在 Ruby 中行走的目录的一个转折

我想做以下事情:

给定一个目录树:

...我想遍历目录树并构建一个数组,其中包含每个目录中至少有一个文件的第一个文件的路径。整体结构可能非常大,文件多于目录,所以我想只捕获第一个文件的路径,而不遍历给定目录中的所有文件。一个文件就够了。对于上面的树,结果应该看起来像一个仅包含以下内容的数组:

我在 ruby​​ 中使用过 Dir 和 Find 选项,但我的方法感觉太暴力了。

有没有一种有效的方法来编码这个功能?感觉就像我在这里错过了一些红宝石技巧。

非常感谢!

这是我的方法:

有效,但看起来很乱。

0 投票
5 回答
6329 浏览

bash - 如何在文件的特定字段中的单词字符之间插入空格

我有一个包含 100000 行的文件

我想知道如何通过在字符之间添加空格来有效地显示第二个字段。

一种解决方案是使用 awk 获取第二列,然后使用 sed 添加空格。但由于文件太长,我想避免使用管道。然后我想知道我是否可以通过使用 awk 来做到这一点。

提前致谢

0 投票
3 回答
1184 浏览

bash - 高效搜索文本文件中的多个字符串

我使用egrep在一个非常长的文件(100 万行)中查找多个字符串的完全匹配:

但是即使只找到两个字符串也需要太多时间。似乎它会沿着文件的总行查找每个字符串,即使它发现了一个事件。事实上,我知道该文件只包含每个字符串的一次出现。然后我想知道一旦发现字符串出现,如何强制 egrep 停止查找字符串并查找列表中的下一个。或者,如果有另一种方法可以有效地做到这一点。

谢谢。

0 投票
2 回答
6530 浏览

c - push 与 mov 的成本(堆栈与近内存)以及函数调用的开销

问题:

访问堆栈的速度与访问内存的速度相同吗?

例如,我可以选择在堆栈中做一些工作,或者我可以直接使用内存中的标记位置进行工作。

所以,具体来说:push ax速度是否与mov [bx], ax? 同样pop ax速度与mov ax, [bx]? (假设 bx 在near内存中保存一个位置。)

提问的动机:

在 C 中,不鼓励使用参数的琐碎函数是很常见的。

我一直认为这是因为不仅参数必须被压入堆栈然后在函数返回后从堆栈中弹出,而且因为函数调用本身必须保留 CPU 的上下文,这意味着更多的堆栈使用。

但是假设人们知道标题问题的答案,应该可以根据直接内存访问的等效数量来量化函数用于设置自身(推送/弹出/保留上下文等)的开销。因此,标题问题。


编辑:澄清:near上面使用的与 16 位 x86 架构far分段内存模型相反。)

0 投票
2 回答
10488 浏览

performance - 并行与串行的效率和加速

目前,我正在阅读我的教授在课堂上分发的指南。学习指南不是作业,只是了解考试的内容。我已经完成了除了 1 个问题之外的所有问题,并希望有人可以帮助我。

这是问题:假设 Tserial = n 和 Tparallel = n/p + log2(p),其中时间以毫秒为单位,p 是进程数。如果我们将 p 增加 k 倍,找到一个公式,说明我们需要增加多少 n 才能保持恒定的效率。如果我们将进程数从 8 个增加到 16 个,我们应该将 n 增加多少?并行程序是否可扩展?

任何帮助理解这一点将不胜感激。