标签: overhead-minimization

如何为Objective-C协议提供默认实现?

我想指定一个带有可选例程的Objective-C协议.当例程没有由符合协议的类实现时,我想在其位置使用默认实现.协议本身是否存在我可以定义此默认实现的位置?如果没有,减少复制和粘贴此默认实现的最佳做法是什么?

protocols objective-c standards-compliance default-implementation overhead-minimization

22
推荐指数
2
解决办法
1万
查看次数

关于开销的HTTP与Websockets

我正在使用两端的node.js构建一个文件同步程序(与Dropbox不同).我需要有数千个客户端同时请求数据.

这是我目前的系统:

  • 服务器通过websocket将通知推送到客户端(文件已更新)
  • 客户端队列下载并在空闲时发出HTTP请求

我将以压缩块的形式提供数据,例如每个50 MB,因此HTTP请求开销(标头)可以忽略不计.

如果我使用websockets进行请求推送通知,会有:

  • 明显的整体速度提升?(减少延迟,身份验证等)
  • 服务器上的额外开销是否保持连接打开?
  • 推送二进制数据的问题?

我想我需要通过专用websocket发送通知,因为我不希望它们在下载过程中在服务器上排队(大量开销).

注意:只要客户端的系统处于打开状态,这些websockets将是长期打开的.

编辑:我将在不同端口上的不同http服务器上使用websockets,以便将它们移动到不同的CPU核心.我可能会有数千个(如果不是数十万个)并发的websockets打开...

optimization websocket node.js overhead-minimization

8
推荐指数
1
解决办法
6403
查看次数

减少Python中的函数调用开销

我开发了一个应用程序,模拟N 个机器人在网格中移动,尝试以有限的步骤最大化访问的网格单元的数量,并在目标点相遇。一切正常,但速度太慢了。目前是python+numpy+mathplotlib。

最大机器人数量的软限制为 100(如果可以更高,那就太好了)。

为此,我做了以下简化的操作:

while steps > 0:
    for robot in robots:
        agent.calc(robot,steps)
Run Code Online (Sandbox Code Playgroud)

机器人是一个 1x2 numpy 数组(x 和 y 坐标)。

这里的代理决定要做什么。因为我需要即时改变战术和策略,所以我无法改变这个逻辑。

agent.calc一个接一个地就地更新机器人。

cProfiling 它返回以下内容。提取顶部

         39014272 function calls (39010490 primitive calls) in 150.314 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
 12417735   62.807    0.000   62.807    0.000 distance.py:8(taxicab_distance)
   124596   36.882    0.000   36.882    0.000 {numpy.core.multiarray.array}
   113657   30.204    0.000  100.800    0.001 logical_agent.py:16(choose_max_distance_to...)
 12417013    6.579    0.000   69.384    0.000 squaregrid.py:30(distance)
   113700    2.900    0.000  109.769    0.001 logical_agent.py:73(calc)
 11652363 …
Run Code Online (Sandbox Code Playgroud)

python performance numpy cython overhead-minimization

6
推荐指数
2
解决办法
4347
查看次数

我们如何估算压缩文件的“开销”?

假设我们压缩例如一个7字节大小的.txt文件。压缩并转换为.zip文件后,大小将为190个字节。

有没有办法估计或计算“开销”的近似大小?

哪些因素会影响间接费用的大小?

zlib的计算开销:他们说:“......只有扩张是每16 KB的块,五个字节的开销(约0.03%),再加上六个字节整个流的一次性开销。”

我只是把这个站点告诉我们可以估计“开销”大小。

注意开销是将一些额外的数据添加到数据的压缩版本中。

compression zip overhead overhead-minimization

5
推荐指数
1
解决办法
1352
查看次数

移动 std::shared_ptr 的开销?

这是一个 C++ 片段。Func1生成一个共享对象,直接移入Func2. 我们认为不应该有开销Func3。将此代码片段放入Compiler Explorer中,我们发现使用 MSVC 的代码比 clang 或 GCC 短 2-3 倍。为什么会这样?可以使用 clang/GCC 获得更短的代码吗?

它看起来像是Func3生成异常处理代码来清理临时共享对象。

#include <memory>

std::shared_ptr<double> Func1();
void Func2 (std::shared_ptr<double> s);

void Func3()
{
  Func2(Func1());
}
Run Code Online (Sandbox Code Playgroud)

c++ move shared-ptr overhead-minimization

5
推荐指数
1
解决办法
179
查看次数