问题标签 [overhead]

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 投票
1 回答
614 浏览

.net - F# Serialize Discrimitted Union 为什么这么多字节?

我正在尝试为 UDP 数据包流序列化一些数据,并且我从序列化中获得了巨大的开销。如果我用 1k 字节数组对 FileData 进行编码,我会得到 2312 个字节。我如何在不自己编码和解码所有内容的情况下减少这种开销?

0 投票
6 回答
14583 浏览

c++ - 当没有抛出异常时,C++ 异常以什么方式减慢代码速度?

我已经读到使用 C++ 异常进行异常处理有一些开销,而不是检查返回值。我只是在谈论没有抛出异常时产生的开销。我还假设您需要实现实际检查返回值并执行适当操作的代码,无论这与 catch 块所做的操作等效。而且,将抛出异常对象的代码与内部包含 45 个状态变量的代码与为每个错误返回负整数的代码进行比较也是不公平的。

我并不是仅仅基于可能执行得更快的 C++ 异常来建立一个案例来支持或反对 C++ 异常。我最近听说有人提出,一旦您考虑到检查返回值和处理错误所需的所有额外簿记代码,使用异常的代码应该与基于返回码的代码一样快地运行。我错过了什么?

0 投票
3 回答
588 浏览

delphi - Delphi 动态数组包含哪些簿记数据?

这是一个检查内存分配的简单程序。使用任务管理器检查前后值表明每个动态数组在 size = 1 时占用 20 个字节的内存。元素大小为 4,这意味着簿记数据的开销为 16 个字节。

通过查看 system.pas,我可以找到一个 -4 字节的数组长度字段和一个 -8 字节的引用计数,但我似乎找不到对其他 8 个字节的任何引用。有人知道他们在做什么吗?

示例程序:

0 投票
2 回答
333 浏览

php - 对 PHP 脚本开销的内部 Apache 请求

我有一个 PHP 页面,它通过向同一服务器上的另一个站点发出 HTTP 请求来获取其内容,使用file_get_contents. 两个站点都在 Apache 2 中运行,它使用 suPHP(它是 FastCGI,对吗?)调用 PHP

这个调用的开销有多大?Apache 在向 PHP 发送请求之前会做很多处理吗?

另一种拨打电话的方法是让第一个站点到exec('php /the/other/script.php some parameters'). 这会更快,还是生成进程的开销大于通过 Apache 的开销?

0 投票
2 回答
1749 浏览

c++ - c/c++中指针的内存开销

我在一个 64 位平台上,所以所有内存 adrs 都是 8 个字节。

因此,为了估计数组的内存使用情况,我是否应该为数组中的每个条目在 sizeof(DATATYPE) 中添加 8 个字节。

例子:

那么每个条目是否占用 10 个字节?我的 1mio 长度数组会因此使用至少 10 兆字节吗?

谢谢

0 投票
14 回答
7031 浏览

java - 用Java编写“异常驱动开发”的性能成本?

在 Java 中创建、抛出和捕获异常是否有任何性能成本?

我计划将“异常驱动开发”添加到一个更大的项目中。我想设计自己的异常并将它们包含在我的方法中,迫使开发人员捕捉并做适当的工作。

例如,如果您有一种方法可以根据名称从数据库中获取用户。

但是,用户可能为空,并且在使用用户的公共方法之前忘记检查这一点是很常见的。

这将导致 NullPointerException 和崩溃。但是,如果我在返回用户对象之前进行了检查,如果它为 null 并抛出“UserIsNullException”:

我强迫实施者思考和行动:

它使代码对于意外崩溃更加安全,并消除了更多错误。假设该网站每小时有数百名访问者,并且这种设计模式几乎无处不在。

这种设计方法将如何影响性能?收益是否超过了成本,还是仅仅是糟糕的编码?

谢谢你的帮助!

更新!需要明确的是,我的注意力不是包装 NullPointerException,正如我的示例所暗示的那样。目标是强制实现者编写一个 try/catch,避免真正崩溃的头痛,因为:

用户 == 空

被遗忘了。问题涉及比较这两种设计模型:

相对:

0 投票
2 回答
135 浏览

javascript - *应该*我制作一个 Ajax 表单的原子性如何?

我有一些通过 AJAX 带来的 Web 表单,当我在后端处理数据库时,我认为使用 AJAX 原子地处理表单上的每个输入可能会更容易,将表单保存在用户编辑时的“实时”。表格是约 20 个管理设置字段。

这会给应用程序带来巨大的开销,导致它容易出错,还是这是一个可行的想法?当然,条件操作(例如需要输入文本的复选框)将一直保留到文本框获得焦点并失去焦点。

评论?

0 投票
5 回答
6799 浏览

java - Java 内存开销

我想问一下 java 中的内存开销,我有一个很大的 ArrayList(61,770 个项目),并试图通过分析应用程序来计算每个项目占用的内存量(计算对象及其 ArrayList 条目)我得到了加载所有数据后,堆占用约 25Mb。当 ArrayList 只有 2 个项目时,堆占用 ~1Mb ,大致如下:

(24*1024*1024)/61,768 = 407 字节。

但是,当我计算每个对象的字段时,我得到 148 个字节(不包括 ArrayList,并且假设 int=4,float=4,reference=4),我很想知道所有这些额外字节是从哪里来的从...

我可以猜测,由于我存储在 ArrayList 中的对象正在实现一个接口,它们存储了额外的值,也许 VM 为每个实现的方法存储了一个 4 字节的函数指针?他们实现的接口有 20 个函数,因此增加了 80 个字节,总共 228 个字节,仍然没有接近测量的 400 个字节。

任何帮助,将不胜感激。


哇,感谢所有伟大的答案。

@Bolo:感谢链接,我用这个类测量每个对象约 350 个字节,所以我至少可以确认大量内存使用的来源。

@Yuval A:感谢您的介绍,这是一个宝贵的信息来源。

@Ukko:注意点。

@Jayan:现在当我尝试转储堆时,NetBeans 分析器给我错误,稍后再试。

0 投票
6 回答
30145 浏览

c++ - 将 struct 对象作为参数传递给 c++ 中的函数是一种好习惯吗?

我在下面尝试了一个示例:

打印出来的结果是:

这是我所期望的。我的问题是:参数 p 是否获得对象 p1 的完整副本?如果是这样,我想知道这是否是一个好习惯?(我假设当结构变大时,这会产生大量的复制开销)。

0 投票
1 回答
1014 浏览

iphone - NSArray 上的 NSKeyedArchiver 开销很大

我在为 iPhone 应用程序生成数据的 Mac OS X 程序中使用 NSKeyedArchiver。我发现默认情况下,生成的档案比我预期的要大得多。例子:

这存储了 10 * 100000 = 1M 字节的有用数据,但结果文件的大小几乎是 3 兆字节。开销似乎随着数组中项目的数量而增长。在这种情况下,对于 1000 个项目,文件大约为 22k。

“file”报告它是“Apple 二进制属性列表”(不是 XML 格式)。

有没有一种简单的方法可以防止这种巨大的开销?我想使用 NSKeyedArchiver 因为它提供的简单性。我可以将数据写入我自己的非通用二进制格式,但这不是很优雅。此外,将数据聚合成大块并将它们提供给 NSKeyedArchiver 应该可以工作,但同样,这有点超过了使用简单&easy&ready to use archiver 的意义。我是否错过了一些可以减少这种开销的方法调用或使用模式?