问题标签 [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.
swift - 类型安全和类型推断有什么区别?
它们有何不同?我有点困惑,因为它们似乎是相似的概念。
理解它们对优化编译时间有何帮助?
.net - 将文件或 DB 值插入编译常量 (Visual Basic)
想象一下 VB.NET 中的以下代码:
这些条件在编译时执行,但现在我试图从文件或数据库中为常量 TestCode 赋予一个值。这个想法是能够在运行时更改该常量值,而无需更新生产中的软件。
有谁知道该怎么做?
谢谢
c++ - 如何使用模板创建带有斐波那契数的编译时模板化集合/数组/向量?
我有一个班级模板
“fibonacci”必须是一个结构,在编译时创建,包含 U 类型的所有斐波那契数,从 1 到小于 max_U 的最大可能斐波那契数。因为我不知道 U 是什么类型(我只知道它是算术),所以我必须以某种方式检查我可以生成多少个数字。我尝试了许多不同的方法,但都没有奏效。
例如,我尝试做这样的事情:
但我收到一个错误:“致命错误:递归模板实例化超出最大深度 256”。
c++ - 头文件中定义的 constexpr 变量在编译时被多次评估
考虑以下头文件,它由慢速 constexpr 函数组成,用于初始化全局变量:
调用这个函数大约需要 10 秒
现在,如果这个头文件在多个翻译单元中被#included,编译时间会随着每个翻译单元#includes这个文件的增加而增加
有数百个翻译单元,编译现在需要不合理的时间。
由于这是一个 constexpr 函数,我假设编译器只会计算一次该函数的返回值,并在不同的翻译单元中使用相同的值
有没有办法告诉编译器只评估每个“g_val”的值一次?如果没有,可以做什么?
我目前正在使用 g++-5.4,但我认为标准规定了这种行为(即使我在当前标准中没有找到它)
c - 如何在编译 C 程序之前检查库是否可用
有没有办法仅在编译器可用时才包含库?
我考虑过检查它#ifndef
(如下所示),但它只是检查是否未定义宏名称,而我真正需要的是检查编译器是否可以在编译时访问 C 库。
有没有办法做这个验证?
c++ - 如何在编译时解析静态 const std::string?
我的 C++ 代码中有一些带有绑定的 SQL 查询,这些查询是static const std::string
,因为这些查询很复杂,很容易在某些细节上出错。我想在编译时做一些非常基本的检查,例如计算逗号或:
字符的数量。
xamarin.forms - IMarkupExtension - 在编译期间检查属性类型 (xamarin.forms)
如果 IMarkupExtension 中的给定参数与我期望的类型不兼容,我想在编译期间抛出异常。我能达到这个效果吗?
下面我放了我的实验,但我不知道在哪里以及如何检查我在“TODO”中写的内容
代码(我标记了待办事项)
XAML
请注意,参数是 SampleData2 类型,但如果它不是 SampleData1 类型,我想抛出异常。
资源
资源使用
检查(不一定在这个地方,但肯定在编译期间)
ios - 为什么字符串添加需要这么长时间才能构建?
我正在添加文本UIlabel
,以及它的性能成本(我使用此链接使用了构建时间分析器)。我该如何优化这段代码?
我也试过[ array].joined
,但这并没有什么不同
python - 如何修改PE文件头中的TimeDateStamp字段?
我正在编写一个python程序来修改PE文件的编译时间。根据我的研究,编译时间存储在 TimeDateStamp 字段下的文件头中。但是,我只设法找到读取 TimeDateStamp 值的方法。
例如,
如何改为编辑 PE 文件头中的 TimeDateStamp 字段?
c++ - constexpr 计算的编译时性能
我有一些非平凡的 C++17 函数标记为constexpr
. 他们正在做与图相关的计算(深度优先遍历)和通用算法(例如,查找、排序、唯一...)。
如果我尝试通过将结果放入constexpr
全局变量来强制在编译时进行评估,则可能会发生 3 件事:
- 对于小型计算(给出一个想法,可以说是约 100 个节点的图,节点或多或少是整数)编译很好(大约需要 2 秒)
- 使用约 500 个节点,编译需要约 1 分钟并占用 30GB 内存(!)。
- 对于大约 1000 个节点,编译需要太多内存才能完成。
如果我删除constexpr
限定符并要求运行时计算,编译和执行速度非常快(不到 5 秒)
我将 g++ 8.2 与 -O3 -std=c++17 一起使用。
为什么要花这么长时间?g++ 是否以编译时优化问题而闻名constexpr
?constexpr
在编译期间我应该期望函数的性能如何?据我了解,编译器将自己变成了constexpr
计算的解释器。但我绝对不怀疑,在 Python 中评估相同的程序会非常快,因为数据量非常小。
编辑:这里提到了这些问题(GCC 开发人员的博客)