标签[compiler-optimization]
编译器优化包括调整编译器以减少运行时或对象大小,或两者兼而有之。 这可以通过使用编译器参数(即CFLAGS,LDFLAGS),编译器插件(例如DEHYDRA)或直接对编译器进行修改(例如修改源代码)来实现。
2,006个问题
-1
票
0回复
21
用于“&”和“ &&”表达式的C ++编译标准?
我有一个评估4个以上简单算术比较以返回布尔值的核心函数。 这将在一个非常大的循环中被称为O(N ^ 2)次,并且基于返回的单个条件分支。
如果函数写为:
它会使用“&”生成3个条件分支,而不是0
0
票
0回复
25
关于如何运行一组优化算法的经验法则
我的编译器支持以下常见的优化算法:
持续传播。
复制传播。
常见子表达式消除。
代数简化。
不断折叠。
消除无用的代码。
我有一个要优化的程序。 我想知道运行这些优化的最
2
票
0回复
28
普通子表达式消除何时适用?
foo()执行如下简单的数学计算:
如果成对的所有项目都相同,那么Java编译器可以使用Common子表达式消除来对此进行优化吗? 还是有另一个优化发生? 我问,因为发现更多的成对值相同时,
1
票
0回复
64
有没有办法告诉编译器某些函数的返回值不会改变?
我使用库libA,而库又使用库libB。 现在,libB为“当前macguffin”提供了线程本地索引。 其他线程(除非它们开始写入内存中的任意位置)不能更改当前线程的“当前macguffin”。 现
2
票
2回复
140
Dart编译器是否可以推断const构造函数的用法?
我的想法是,如果dart能够自动执行,则将使用const构造函数,以解释该假设,假设我们有一个已经具有const constructor的小部件,例如:
class Retry extends Sta
-3
票
0回复
17
3
票
2回复
100
2
票
1回复
61
如何使用HotSpot JVM @DontInline批注?
我目前正在努力优化一种特殊的方法,不幸的是,JVM内联了这种方法,从而阻止了该方法的正确向量化。 我注意到,有一个注释禁止内联,即jdk.internal.vm.annotation.DontInli
1
票
0回复
43
哪种类型的代码适合JIT优化?
我正在使用LLVM API,并且对内置JIT的执行引擎(与静态编译的目标代码相比)的性能感到好奇,以及执行引擎是否更易于在开发过程中使用。 显然已经看到了这个问题,JIT LLVM可以为特定类型的代码
0
票
0回复
22
省略回报会增加构建时间吗?
使用一些迅速功能的语法会使构建时间更长。 例如,据说使用类型推断会大大增加构建时间。 这是因为编译器“推断”类型仅会读取所写内容。 我想知道是否省略“返回”会增加构建时间,因为编译器必须以某种方式知道
2
票
1回复
66
到达定义分析-我的解决方案正确吗
我被要求为以下代码编写到达定义,我想知道我的解决方案是否正确? 我是否在正确的轨道上? 我真的很感谢任何帮助或提示。 谢谢你。
代码:
步骤#1:查找块并标记
步骤#2:查找每个块的GEN和
14
票
2回复
529
为什么标准的“ abs”功能比我的快?
我想尝试制作自己的绝对值函数。 我认为,计算绝对值的最快方法是简单地屏蔽符号位(IEEE 754中的最后一位)。 我想将其速度与标准abs功能进行比较。 这是我的实现:
// Union used f
-2
票
2回复
64
C#空锁块是否被“优化”了吗?
我找不到有关C#编译器或JIT是否删除其中没有代码的lock语句的任何信息。 这将始终生成并执行Monitor.Enter和Monitor.Exit调用吗?
我要执行的操作(经过简化的版本)(是的
2
票
1回复
45
使用sizeof,strlen等重复计算
假设我的阵列很大,并且正在执行以下操作:
当然,不应每次都计算东西的sizeof因此应该这样:
我的问题是,是否可以假设任何编译器都会自动执行上述优化,所以我使用哪种方法都没有关系? 或者我应
0
票
0回复
36
需要我们使用一些与asm volatile比较的运行时内存防护机制
假设我们有一段这样的C ++代码:
据我了解,编译器可以优化代码,这意味着只有在不违反常规规则的情况下,编译器才能对执行顺序进行重新排序。 例如,下面代码的执行顺序
可以重新排序为
因此,
0
票
1回复
51
3
票
1回复
69
嵌套作用域如何影响堆栈深度?
我尝试使用MSVC将以下c代码编译为具有(CL TestFile.c / Fa / Ot)和没有优化(CL TestFile.c / Fa)的程序集,结果是它们产生相同的堆栈深度。
为什么编译器在知
2
票
0回复
58
为什么仅当迭代指针未存储在结构中时,VS C ++ 2017编译器才使用SSE优化?
动机很简单:我遍历两个uint64数组,位及其值,然后将结果存储在第三个数组中。 但是,在我概括了接受结构形式的输入的解决方案之后,代码大大降低了速度,并且我发现生成的程序集是完全不同的。 我的问题是
4
票
2回复
86
gcc如何将1和100的和优化为5050
我用gcc -O3 -S ac编译了以下c程序:
#include <stdio.h>
int main() {
int sum = 0;
for (int i = 0;
0
票
3回复
68
开关和if / else的哪种组合更快,为什么?
我有两个条件。 一个具有两个可能的值,另一个具有更多的值(在此示例中,我写了3个案例,但最多可以有8个案例)。 哪个代码运行速度更快,错误提示更少(更准确)?
代码a)
代码b)
请告诉我您