问题标签 [compilation-time]

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

swift - 类型安全和类型推断有什么区别?

它们有何不同?我有点困惑,因为它们似乎是相似的概念。

理解它们对优化编译时间有何帮助?

0 投票
1 回答
58 浏览

.net - 将文件或 DB 值插入编译常量 (Visual Basic)

想象一下 VB.NET 中的以下代码:

这些条件在编译时执行,但现在我试图从文件或数据库中为常量 TestCode 赋予一个值。这个想法是能够在运行时更改该常量值,而无需更新生产中的软件。

有谁知道该怎么做?

谢谢

0 投票
1 回答
644 浏览

c++ - 如何使用模板创建带有斐波那契数的编译时模板化集合/数组/向量?

我有一个班级模板

“fibonacci”必须是一个结构,在编译时创建,包含 U 类型的所有斐波那契数,从 1 到小于 max_U 的最大可能斐波那契数。因为我不知道 U 是什么类型(我只知道它是算术),所以我必须以某种方式检查我可以生成多少个数字。我尝试了许多不同的方法,但都没有奏效。

例如,我尝试做这样的事情:

但我收到一个错误:“致命错误:递归模板实例化超出最大深度 256”。

0 投票
1 回答
598 浏览

c++ - 头文件中定义的 constexpr 变量在编译时被多次评估

考虑以下头文件,它由慢速 constexpr 函数组成,用于初始化全局变量:

调用这个函数大约需要 10 秒

现在,如果这个头文件在多个翻译单元中被#included,编译时间会随着每个翻译单元#includes这个文件的增加而增加

有数百个翻译单元,编译现在需要不合理的时间。

由于这是一个 constexpr 函数,我假设编译器只会计算一次该函数的返回值,并在不同的翻译单元中使用相同的值

有没有办法告诉编译器只评估每个“g_val”的值一次?如果没有,可以做什么?

我目前正在使用 g++-5.4,但我认为标准规定了这种行为(即使我在当前标准中没有找到它)

0 投票
1 回答
1144 浏览

c - 如何在编译 C 程序之前检查库是否可用

有没有办法仅在编译器可用时才包含库?

我考虑过检查它#ifndef(如下所示),但它只是检查是否未定义宏名称,而我真正需要的是检查编译器是否可以在编译时访问 C 库。

有没有办法做这个验证?

0 投票
4 回答
962 浏览

c++ - 如何在编译时解析静态 const std::string?

我的 C++ 代码中有一些带有绑定的 SQL 查询,这些查询是static const std::string,因为这些查询很复杂,很容易在某些细节上出错。我想在编译时做一些非常基本的检查,例如计算逗号或:字符的数量。

0 投票
1 回答
66 浏览

xamarin.forms - IMarkupExtension - 在编译期间检查属性类型 (xamarin.forms)

如果 IMarkupExtension 中的给定参数与我期望的类型不兼容,我想在编译期间抛出异常。我能达到这个效果吗?

下面我放了我的实验,但我不知道在哪里以及如何检查我在“TODO”中写的内容

代码(我标记了待办事项)

XAML

请注意,参数是 SampleData2 类型,但如果它不是 SampleData1 类型,我想抛出异常

资源

资源使用

检查(不一定在这个地方,但肯定在编译期间)

0 投票
5 回答
254 浏览

ios - 为什么字符串添加需要这么长时间才能构建?

我正在添加文本UIlabel,以及它的性能成本(我使用此链接使用了构建时间分析器)。我该如何优化这段代码?

我也试过[ array].joined,但这并没有什么不同

0 投票
2 回答
2309 浏览

python - 如何修改PE文件头中的TimeDateStamp字段?

我正在编写一个python程序来修改PE文件的编译时间。根据我的研究,编译时间存储在 TimeDateStamp 字段下的文件头中。但是,我只设法找到读取 TimeDateStamp 值的方法。

例如,

如何改为编辑 PE 文件头中的 TimeDateStamp 字段?

0 投票
1 回答
579 浏览

c++ - constexpr 计算的编译时性能

我有一些非平凡的 C++17 函数标记为constexpr. 他们正在做与图相关的计算(深度优先遍历)和通用算法(例如,查找、排序、唯一...)。

如果我尝试通过将结果放入constexpr全局变量来强制在编译时进行评估,则可能会发生 3 件事:

  1. 对于小型计算(给出一个想法,可以说是约 100 个节点的图,节点或多或少是整数)编译很好(大约需要 2 秒)
  2. 使用约 500 个节点,编译需要约 1 分钟并占用 30GB 内存(!)。
  3. 对于大约 1000 个节点,编译需要太多内存才能完成。

如果我删除constexpr限定符并要求运行时计算,编译和执行速度非常快(不到 5 秒)

我将 g++ 8.2 与 -O3 -std=c++17 一起使用。

为什么要花这么长时间?g++ 是否以编译时优化问题而闻名constexprconstexpr在编译期间我应该期望函数的性能如何?据我了解,编译器将自己变成了constexpr计算的解释器。但我绝对不怀疑,在 Python 中评估相同的程序会非常快,因为数据量非常小。

编辑:这里提到了这些问题(GCC 开发人员的博客)