问题标签 [tradeoff]

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 回答
2254 浏览

python - Python Shelve 模块内存消耗

我被分配了读取 .txt 文件的任务,该文件是各种事件的日志,并将其中一些事件写入字典。

问题是文件有时会变得超过 3GB。这意味着字典变得太大而无法放入主存储器。看来Shelve是解决这个问题的好方法。但是,由于我将不断修改字典,因此我必须writeback启用该选项。这是我关心的地方 - 教程说这会减慢读/写过程并使用更多内存,但我无法找到有关速度和内存如何受到影响的统计数据。

任何人都可以澄清读/写速度和内存受到了多少影响,以便我可以决定是使用写回选项还是牺牲一些可读性来提高代码效率?

谢谢

0 投票
2 回答
1938 浏览

c++ - Windows 上的 GNU GSL 和 MATLAB

这个问题实际上是关于 GSL 和 MATLAB 之间的权衡。首先,让我定义一些变量:

此外,我在问这个问题,因为我找不到关于这两种方法的易用性、许可、性能标准的任何完整答案。

我们需要使用 GNU GSL 和 MATLAB 实现一些数值运算(如 FFT)。我知道可以在带有 MS VS IDE 的 Windows 操作系统上同时使用 GSL(带有 cygwin)和 MATLAB。

但是,我有以下问题:

  • 在应用程序中使用 MATLAB 库时的许可(对于 GSL 也是如此)
  • MATLAB C++ 代码和 GNU GSL 之间的性能差异(尤其是在计算 FFT 时)
  • 易用性(异常、错误处理、可测试性)

如果您阐明实施决策的路径,那就太好了。

另外,提前谢谢

0 投票
4 回答
370 浏览

java - Java 中的错误处理权衡

错误处理有两种方式:

1)使用嵌套的If并检查错误

2) 使用 try/catch

这是有关此的教程。但是这里说 try/catch 会损害性能。所以,似乎有一个权衡。如何决定?应该做什么?

0 投票
1 回答
775 浏览

ruby-on-rails - 通过 Rails 数据库优化搜索

我正在构建一个 Rails 项目,我有一个包含一组表的数据库。每个表包含 500k 到 1M 行,并且我不断创建新行。

根据项目的性质,在每次创建之前,我必须在表中搜索重复项(对于一个字段),所以我不会两次创建同一行。不幸的是,随着我的桌子越来越大,这需要的时间越来越长。

我在想我可以通过向我正在搜索的特定字符串字段添加索引来优化搜索。但我听说添加索引会增加创建时间。

所以我的问题如下:查找和创建包含索引字段的行的权衡是什么?我知道向字段添加索引会导致我的程序使用 Model.find_by_name 更快。但它会使我的行创建慢多少?

0 投票
1 回答
390 浏览

javascript - 小书签弹出:通过 JS 或 iframe 生成 div?

在创建打开“假弹出窗口”(类似于亚马逊的愿望清单、pinterest 等)的小书签时,为什么人们不使用 iframe 而不是生成所有元素并从中删除所有页面样式?据我所知:

iframe 优点:

  • 可以使用浏览器机制来记住密码等
  • 没有第 3 方 cookie 问题
  • 表单提交更简单
  • 更少的javascript,可能会被页面上的脚本等破坏

iframe 缺点:

  • 无法自动关闭弹窗(bookmarklet 无法读取 iframe 内容)
  • 任何页面脚本都必须在 iframe 之外运行,然后通过 GET 参数传入结果(iframe 无法读取页面内容)
  • ???

在我看来,如果您不需要自动关闭的东西,那么 iframe 将是迄今为止更好的选择。然而似乎没有人这样做。为什么不?

0 投票
0 回答
802 浏览

algorithm - 移动平均精度?

我有一些人们对事物进行投票的数据,如果对每个项目进行平均投票,那将是很好的选择。您可以将投票视为不断传入的数字流。现在我可以准确地计算出平均值,但要做到这一点,我必须存储两个数字,要么是总数,要么是当前平均值,以及到目前为止已经看到的项目数。如果我这样做,我可以使用

但这很痛苦,因为它迫使我为每个我想要投票的项目存储两条数据。我知道还有另一种方法称为移动平均值或迭代器平均值,它可以处理流数据,但只会给出一个近似平均值,如下所示:

其中 alpha 是一些小的固定学习率。这只是试图将新平均值向新项目的方向移动,并按与该新项目与当前估计值之间的差异成比例的量移动。这给了我一种方法,只需要存储一个数字(当前平均值)并且当有新项目进入时仍然能够更新它,但代价是这只是一个近似值。

我想知道这种方法引入的错误是否有任何已知的界限......是否有一个公式来估计这个估计与事实的差距,以及我应该如何选择一个好的阿尔法?有关此帖子和此问题的更多信息。

0 投票
2 回答
272 浏览

networking - 编码速度,编程速度权衡:C++ 或 Java 与本机代码

我想通过编写一个程序来玩不同类型的网络来探索神经网络。到目前为止,我已经用 C++ 编写了一个基本的感知器。据我了解,神经网络可能需要大量的计算能力来完成相当小的任务,所以优化是一个问题,或者至少我想认真对待这个想法,而不像 gpu 编程那样走极端。

我很喜欢用 Java 编程,而用 C++ 则更少,但无论如何我都想获得更多的经验。

我的问题:

鉴于我可以用 Java 更快地编写主程序,但我担心速度。用 Java 编写主程序并用 C++ 编写更密集的部分,还是用 C++ 编写整个程序更有意义?

我没有更喜欢一种语言而不是另一种语言的用户界面要求(即我不打算将其粘贴在网络应用程序中)。

**没有其他人会使用它,因为已经有更多专业的开源版本可用(FANN/Encog)。这纯粹是为了我的娱乐/学习。我想学习更多的 C++,所以我想至少写一些如果它的话(尽管如果有人觉得完全用 Java 写它更有意义,我会很想知道为什么。)

0 投票
1 回答
443 浏览

unit-testing - RAII 和单元测试原则

RAII (Resource Acquisition Is Initialization) 是建议的构造对象的方法之一。它与单元测试原则有什么关系:在构造函数中没有完成复杂的工作?尤其是“新”运算符没有明确创建对象?然而,某些对象的创建有时需要一些更复杂的步骤,并且将工厂传递给构造函数会使 API 变得“脏”,这意味着降低了易读性。同时满足这两个原则的一般方法是什么?

我在 SO 上找到了另一个主题:堆栈分配的 RAII 对象与 DI 原则,但是它看起来像一个更普遍的问题,并且没有得到很好的解释。

0 投票
0 回答
48 浏览

language-agnostic - 将命令存储在视频内存中与通过 PCIe 访问它们

我目前正在阅读Fabian "ryg" Giesen的“图形管道之旅”系列博客的第 2 部分。

在这个特定的部分中,他谈到了一个有趣的观点。GPU 处理的命令既可以从驻留在 GPU 上的视频内存中读取,也可以通过 PCI Express 总线从 CPU 端读取。

我含蓄地理解了一些优点和缺点。但是,我对他们很模糊。我不能说我完全理解这些权衡。无论如何,我将尝试连贯地表达我的想法。

在显存中存储数据:

  • 肯定更快。
  • 但是,它有内存开销(不确定带宽)。

从 CPU 读取:

  • 在将数据存储在视频内存中是一种浪费的情况下可能会更好(也许是因为它永远不会再次使用?)。
  • 我认为在重用数据时将数据存储在视频内存中会很有用,因为它可以节省 PCIe 总线上的带宽。
  • 但是这种通信会比直接从显存中读取要慢。

我有一种感觉,两者之间有更多的复杂性和权衡取舍。另外,我不完全确定我上面所说的是真的。我希望有人:

  1. 说明一些重要的权衡和可能的其他复杂性,只是为了更好地理解。
  2. 验证我上面所说的是否正确!(我还不是很清楚。)
0 投票
1 回答
145 浏览

frameworks - IBM Worklight 在原生移动应用程序开发中可以提供和不可以提供哪些功能?

我已经读过这个:

IBM Worklight - Native 应用程序不能使用哪些功能?

但它现在有点老了,我在问:

  • 在使用 Worklight 在业务应用程序和银行工具领域开发本机跨平台移动应用程序时,仍然缺少哪些功能(JSONStore 和 Direct Update 仍然不可用?还缺少更多功能?);

  • 一般来说,尽管使用了原生 SDK,但使用这种框架的缺点是什么(比如跨平台努力跟上原生平台路线图、框架基础设施的权重、性能问题、一般权衡等)。

欢迎对 Worklight 文档的任何参考。

先感谢您