问题标签 [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 投票
14 回答
127344 浏览

c# - 在 C# 中将字段标记为“只读”有什么好处?

将成员变量声明为只读有什么好处?它只是防止有人在类的生命周期内改变它的值,还是使用这个关键字会带来任何速度或效率的提高?

0 投票
5 回答
4716 浏览

c - 在C中进行二进制算术的最佳方法?

我正在学习 C 并编写一个简单的程序,该程序将假定每个为二进制数的 2 个字符串值并根据用户选择执行算术运算:

  • 添加两个值,
  • 从输入 1 中减去输入 2,或
  • 将两个值相乘。

我的实现假设字符串中的每个字符都是一个二进制位,例如char bin5 = "0101";,但是一次解析字符串一个字符的方法似乎太天真了。理想情况下,我想直接使用二进制值。

在 C 中执行此操作的最有效方法是什么?有没有更好的方法将输入视为二进制值,而不是scanf()从字符串中获取每一位?

我做了一些研究,但从初学者的角度来看,我没有发现任何明显更好的方法。任何建议,将不胜感激!

0 投票
3 回答
402 浏览

c# - C# 是否适合集群计算密集型应用程序?

我正准备编写一个光子模拟包,它将在 128 节点 Linux 和 Windows 集群上运行,并带有一个基于 Windows 的客户端,用于设计作业(类似于 CAD)并将它们提交到集群。

其中大部分都是很好的基础,但我很好奇 C# 在实数运算能力方面如何与 C++ 相提并论。我对这两种语言都非常熟悉,但我发现 C# 与 .NET 或 Mono 的卓越对象模型和框架支持非常诱人。但是,我不能用这个应用程序为了开发者的偏好而牺牲太多的处理能力。

有没有人有这方面的经验?有没有可用的硬基准?我假设最终的机器代码将使用相同的技术进行优化,无论它来自 C# 还是 C++ 源代码,特别是因为这通常发生在 pcode/IL 级别。

0 投票
4 回答
203 浏览

python - 在Python中一次将一个字符从一个字符串添加到另一个字符串的有效方法

我目前正在使用 pygame 制作一个函数,该函数在屏幕上绘制一条消息,每帧添加一个字符(即The Hunt for Red October)。我知道我可以简单地从原始字符串中复制(或传递)逐渐变大的切片,但我知道这将非常耗费资源。有一个更好的方法吗?

代码,使用逐渐变大的切片:

0 投票
4 回答
325 浏览

algorithm - C# 4.0,确定字符串长度是否为 0 的最有效方法?第2部分

(抱歉,这是确定字符串长度是否为 0 的最有效方法的第二篇文章?但我不知道如何回复人们的答案,我的回复被发布为“答案”)

理想情况下,我正在寻找的是执行以下操作的最有效算法(将被称为 1 亿次以上)。我正在使用 C# 4.0

将字符串:“ABCDE”转换为数组:string["A","B","C","D","E"]

我的算法如下:

我的问题是,当我针对 100,000 个字符串进行分析时,执行需要 1.04 秒。

如果我注释掉“if (split[i].Length != 0)”检查,只需要 0.2 秒。

谁能告诉我为什么对字符串的这个(简单)查询占用了总执行时间的 80%?(特别是,因为我希望其他领域使用更多的 CPU)我想出的唯一想法是 C# 试图计算字符串长度,人们告诉我不是这样(我猜它更像是 VB 字符串?)。但这对于时间开销来说是没有意义的。

我考虑过尝试查看 split[i][0] 是否存在,但是依靠异常会减慢 WAAAAAAY 的速度。

PS——我的算法也受到影响,因为返回的数组通常比它需要的大,但这似乎并没有太大的开销。

0 投票
1 回答
225 浏览

paint - 用椭圆形画笔填充两点之间像素的最快方法?

假设我正在创建一个基于光栅的绘图程序。我的刷子是椭圆形的。用户单击然后拖动鼠标来绘制一个区域。我现在有两个点:pointA(他们单击的位置)和 pointB(从鼠标拖动返回的第一个点)。我想填充画笔区域内的所有像素。最好的方法是什么?

我的第一种方法是计算两点之间的斜率,然后从 A 点增加到 B 点。对于中间的每个点,我搜索椭圆范围内的所有像素,如果它们在范围内,则将它们打开。但这似乎效率低下,因为像素通常会被检查不止一次——通常是多次检查,因为增量比椭圆小得多(想想维恩图)。

有更好的方法吗?一种更有效且最小化需要检查像素的次数的方法。

0 投票
8 回答
9984 浏览

c - 在 C 中获取当前时间/日期/日期的最有效方法

用 C 语言获取当前时间/日期/日期/年份的最有效方法是什么?由于我必须多次执行此操作,因此我需要一种真正有效的方法。我在freeBSD上。

提前致谢。

0 投票
1 回答
163 浏览

facebook - facebook如何处理它的评论、邮件和短信


这个问题是关于 Facebook 如何处理活动的。我只是想知道他们是如何有效地做到这一点的。

当我们在 facebook 上发表评论时,会有一系列的后台流程,例如向所有订阅者发送邮件、发送短信等。如果他们一次性完成所有的邮件发送和发送短信、发送通知等,发表评论将花费大量时间。对?那么他们是如何管理这个的?

例如:当我对我朋友的照片发表评论时。他们将向同一张照片的所有先前评论者和照片的所有者发送通知和邮件(如果他们已订阅)。如果照片上有 50 位评论员,他们必须发送 50 条通知和邮件,因为他们需要检查谁都订阅了等等。

如果我们尝试在提交评论时发送 50 条通知和邮件。那么处理将花费太多时间

他们如何如此有效地实现这一目标。

0 投票
7 回答
4325 浏览

c++ - C++字符串面试题

我最近参加了一次 C++ 技术面试,在那里我得到了一些简单的字符串操作代码,该代码旨在获取一个字符串并返回一个由第一个和最后一个 n 个字符组成的字符串,然后继续更正任何错误并且也使功能尽可能高效,我想出了下面的解决方案,但是面试官声称有一个更快更优化的方法:

原始代码:

我的代码:

我的变化总结:

  • 更改了接口以将返回字符串作为参考(假设 RVO 和右值尚不可用)

  • 删除了通过 substr 构造的临时字符串

  • 将输入字符串作为常量引用传递,以绕过输入的临时实例化

  • 修复了 last_n 字符串中的 off-by-1 错误

  • 将每个角色的触地次数减少到一次或两次(在重叠场景的情况下)

  • 在字符串 s 的大小小于 n 的情况下进行检查,失败返回 false。

假设只允许使用本机 C++,是否有其他方法可以更有效或更优化地完成上述操作?

注 1:原始输入字符串实例不可修改。

注2:所有解决方案必须通过以下测试用例,否则无效。

0 投票
3 回答
75 浏览

mysql - 如何在 MySQL 查询中多次有效地利用函数调用的结果而不多次调用该函数?

我有一个 SQL 查询,例如:

有没有一种方法我只能调用一次functCall,在其他两个比较中重用它的结果?

谢谢!