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

c++ - 用于编辑文本的最小 cpu 和内存开销数据结构?

我正在创建一个思维导图应用程序,我想知道“笔记”编辑器的最佳数据结构是什么。笔记可能只是几个符号,可能是页面长,并且正在更新、编辑、随机播放等等。该应用程序旨在在移动平台上运行,因此处理和内存开销应该是最小的。

我的基本想法是实现一个绳索/链表类型结构,在编辑过程中对笔记进行分段,以避免在容器已满时重新分配笔记的开销,并避免分配不必要的空间,例如动态增长的向量。

然而,过多的分片笔记本身不可避免地会带来开销,因此我的第二部分实现计划将在笔记编辑期间使用的绳索结构转换为顺序数据结构,以便存储和快速阅读。

所以基本上对象是从顺序数据结构中存储和读取的,但是在编辑时它们会被复制到碎片数据结构中,当编辑完成时,对象会被转换回来。

这是个好主意吗?如果没有,那么欢迎提出建议。无论哪种方式,有人知道我可以从中学习一些类似的开源实现吗?

0 投票
2 回答
7308 浏览

python - ctypes 与 C 扩展

我有一些用 C 语言编写的用于游戏项目的函数。这些函数被调用很多次(大约每秒 2000-4000 次)。这些函数是用 C 语言编写的,以实现原始速度。

现在,对我来说将这些函数包含到 Python 中的最简单方法是使用ctypes. 另一种方法是围绕这些函数编写 Python 的 C 扩展(这需要相当多的额外工作)。所以我想知道,不包括 DLL 的初始加载,开销有多大ctypes


我正在使用 Python 2.7(标准 CPython 版本),我不想使用像 Cython 这样的外部库。

我知道之前有人问过这个问题,但是我没有看到太多关于两个选项之间的性能比较的信息。

0 投票
3 回答
2486 浏览

android - Android 中的服务开销(我应该创建多少)

有谁知道Android中服务的开销有多大。
如果有任何其他论点可以帮助我做出以下设计决定。

我有两个 SQLite Db,一个存储实际数据(基本上只读产品库存),另一个存储设置、选定项目列表等。

现在我创建了一个服务来管理这些数据库,主要有两个原因:

  • 我希望能够“保存关闭”(设置),这可以通过 onDestroy
  • 加载数据需要一些时间,因此快速关闭应用程序会将数据保留在内存中

从设计的角度来看,我可以:

  • 创建一个处理两个数据库的服务
  • 创建两个服务,每个服务处理一个数据库

为每个数据库创建一个单独的服务感觉更干净,例如扩展一个通用基类来处理关机、计时器等。它还允许我独立配置它们(现在不需要)。

另一方面,我不想开始走这条路,然后,当我习惯在“服务”中做这样的事情时,发现有 3 或 5 个服务的限制。

那么,例如 5 个运行服务的开销与托管 5 个不同功能的一个服务的开销如何?有任何想法吗?

0 投票
2 回答
2693 浏览

c# - 将会话和响应对象传递给一个类 - 开销?

我想知道是否有人可以帮助我了解我正在做的事情是否有很多开销。它目前正在运行,但我不确定这是否会减慢网站速度。我有一个工作流obj 类,我在其中设置了所有会话变量。这个类在需要它的页面上实例化:

WorkFlowObj wfo = new WorkFlowObj(this.Session, this.Response); wfo.VendorRedirect();

我需要这个,因为我需要能够跟踪会话变量,同时能够在一个地方跟踪更复杂的页面工作流。这个解决方案已经对我有用,但唯一的问题是我不确定传递会话和响应对象是否会产生很多开销。谁能告诉我这是否非常低效?下面是 workflowobj 类的代码。

0 投票
4 回答
208 浏览

c# - C# 中的自动属性不会导致开销吗?

当我有自动属性并尝试从它的类中访问它时,这似乎是一种开销,因为我使用一个函数来访问我的类的成员,而不是直接访问它。

如果这是正确的,也许我应该考虑在这种情况下不使用自动属性?

0 投票
5 回答
39678 浏览

java - Java if 与 try/catch 开销

在 Java 中使用try/catch块是否有任何开销,而不是if 块(假设封闭的代码不这样做)?

例如,采用以下两个简单的字符串“安全修剪”方法实现:

如果raw输入只是很少null,这两种方法之间是否有任何性能差异

此外,使用简化代码布局的方法是否是一种好的编程模式,尤其是当许多if 块检查罕见错误条件可以通过将代码包含在一个 try/catch 块中来避免时?tryTrim()

例如,一个带有 的方法是一种常见的情况N parameters,它在开始时使用M <= N它们,如果任何此类参数是“无效的”(例如,null 或空字符串),它会快速且确定性地失败,而不会影响其余的代码。

在这种情况下,不必编写k * M if 块(其中k是每个参数的平均检查次数,例如k = 2对于 null 或空字符串),try/catch块将显着缩短代码,并且可以使用 1-2 行注释明确指出“非常规”逻辑。

这种模式也将加速该方法,特别是如果错误条件很少发生,并且它会在不损害程序安全性的情况下这样做(假设错误条件是“正常的”,例如在字符串处理方法中,其中 null 或空值是可以接受的,尽管很少出现)。

0 投票
3 回答
1138 浏览

html - HTML 空白缩进的开销

我开始想知道使用空格缩进 html 文档的总体影响是什么。

为什么不简单地使用制表符来缩进?这不是更具成本效益吗:1 个字符 (\t) 与示例 4 个字符(空格)?

我通过将 asp.net 页面转换为使用选项卡并比较渲染标记的大小进行了一些实验。通过仅替换一个部分视图的空白空间,导致 22kb 大小的页面减少到 19,4kb -> 减少了 12%。更改所有缩进,页面最终分配了 16,7kb - 减少了 24%!(使用 chrome 开发工具和 Fiddler 进行验证)

我的推理合理吗?制表符应该主要用于 HTML 的缩进吗?是否有任何理由使用空格(例如与外来浏览器的兼容性)?

附言。Stackoverflow 似乎也使用空格。将 SO 主页转换为使用选项卡可以减少 9%。这是有效的观察吗?如果是这样,他们为什么不使用标签?

0 投票
1 回答
1937 浏览

javascript - WebSockets:对减少开销有用吗?

我正在构建一个动态搜索(每次击键都会更新):我当前的方案是在每次击键时向服务器发送一个新的 AJAX 请求并以 JSON 格式取回数据。

我考虑为每个搜索“会话”打开一个 WebSocket,以节省一些开销。我知道这会节省时间,但问题是,考虑到这些参数,它真的值得吗: 80 毫秒平均 ping 时间 166 毫秒:每次击键之间的时间,假设用户键入速度相对较快 最坏情况下的传输速率为 1MB/s ,每次击键时必须接收的每个数据包不超过 1KB。该应用程序还需要大约 30-40 毫秒的时间将搜索结果焊接到 DOM。

我发现了这个:HTTP vs Websockets 就开销而言,但这是一个不同的用例。

除了纯 HTTP 开销之外,websockets 会减少任何东西吗?HTTP 开销是多少(假设没有 cookie 和最少的标头)?

我猜 HTTP 请求会在每个请求上打开一个新的网络套接字,而 WebSocket 允许我们一直只使用一个。如果我的理解是正确的,那么打开一个新的网络套接字的实际开销是多少?

0 投票
2 回答
312 浏览

c++ - 在虚拟继承中调用非虚拟基方法是否有任何额外成本?

我已经提到了这个问题(我改变了它的标题)。我知道与virtualness 相关的代码生成是特定于实现的。但是,较早的问题表明virtual,在调用非虚拟基方法时,会产生与继承相关的额外成本。

我编写了以下测试代码并在 g++ 中检查了它的程序集(使用-O4):

公共部分

现在不同的部分在这里:

代码 1(正常继承)

代码 2(虚拟继承)

代码3(多重虚拟继承)

整体代码在这里

当我检查它的组装时,所有 3 个版本之间没有区别。以下是汇编代码:

这是否意味着virtual继承没有任何额外的成本,当某些优化是 ON 时?我是否需要执行任何更复杂的测试代码来评估它?请注意,如果不进行优化,这些程序集之间存在差异。

0 投票
1 回答
918 浏览

windows - 如何关闭二进制文件(.doc、.pdf 等)的 git 1.7.8 开销

我使用 git 1.7.4 来处理大型 svn repo - 没关系。

我更新到 git 1.7.8,现在,当我执行“git svn dcommit”时,git 做了一些多余的工作。在任务管理器中,我看到它进行了大约 1M 的写入(我使用的是 SSD,所以我很担心)。它显示了 .pdf 和 .doc 文档的警告,而 1.7.4 没有显示这些警告,例如:

“c:/Users/..../AppData/Local/Temp/SOMEHASH_documentName.doc 不是 Word 文档”、“错误:PDF 文件已损坏 - 试图重建外部参照表”

并且有很多这样的警告,可能大约 200 个。当 git 显示这样的警告时,我看到任务管理器中的写入计数增加了。

看起来 git 试图对二进制 .pdf/.doc 文件进行一些“智能”处理。但我不需要这个。我应该更改哪个配置选项来关闭这项多余的工作?