小编sta*_*icx的帖子

禁用GCC中的所有优化选项

使用GCC编译C程序的默认优化级别是-O0.根据GCC文档关闭所有优化.例如:

    gcc -O0 test.c 
Run Code Online (Sandbox Code Playgroud)

但是,要检查-O0是否真的关闭了所有优化.我执行了这个命令:

    gcc -Q -O0 --help=optimizers 
Run Code Online (Sandbox Code Playgroud)

在这里,我有点惊讶.我启用了大约50个选项.然后,我使用以下方法检查了传递给gcc的默认参数:

    gcc -v 
Run Code Online (Sandbox Code Playgroud)

我懂了:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-       
2ubuntu1~14.04' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --      
enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --
program-suffix=-4.8 --enable-shared --enable-linker-build-id --
libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-
gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-
sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-
time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --
with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-
cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-
java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-
jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-
directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-
gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --
with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release 
--build=x86_64-linux-gnu …
Run Code Online (Sandbox Code Playgroud)

c optimization gcc performance-testing compiler-optimization

14
推荐指数
3
解决办法
6982
查看次数

GCC优化标志的顺序

我想为输入C程序定义一组优化序列,以研究我应用的序列对代码性能的影响.

例:

 gcc -fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments ... test.c -o out.o 
Run Code Online (Sandbox Code Playgroud)

这些选项的顺序是否会影响生成代码的有效性?

同样,两次应用优化选项会产生影响吗?

有没有更好的方法来测试数千个优化序列?就像-02(包括大约20个选项)一样,我想定义自己的标志

c optimization gcc compiler-optimization

7
推荐指数
1
解决办法
1706
查看次数

GCC标准优化行为

在这里,我使用-O2优化级别(使用gcc 4.8.4)编译输入程序并测量执行时间:

gcc -O2 -c test.c -o obj.o
TIMEFORMAT='%3R' &&  time(./obj.o)
execution time = 1.825
Run Code Online (Sandbox Code Playgroud)

当我将-O2标志替换为在-O2 https://gcc.gnu.org/onlinedocs/gcc-4.8.4/gcc/Optimize-Options级别中GCC manuel中定义的选项列表. html#Optimize-Options就像这样:

gcc -fauto-inc-dec -fcompare-elim -fcprop-registers -fdce -fdefer-pop -fdse -fguess-branch-probability -fif-conversion2 -fif-conversion -fipa-pure-const -fipa-profile -fipa-reference -fmerge-constants -fsplit-wide-types -ftree-bit-ccp  -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre -ftree-phiprop -ftree-slsr -ftree-sra -ftree-pta -ftree-ter -funit-at-a-time -fthread-jumps -falign-functions  -falign-jumps -falign-loops  -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps  -fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fexpensive-optimizations -fgcse  -fgcse-lm  -fhoist-adjacent-loads -finline-small-functions -findirect-inlining -fipa-sra -foptimize-sibling-calls -fpartial-inlining -fpeephole2 -fregmove  -freorder-blocks  -freorder-functions -frerun-cse-after-loop -fsched-interblock  -fsched-spec …
Run Code Online (Sandbox Code Playgroud)

c performance gcc execution-time compiler-optimization

7
推荐指数
1
解决办法
210
查看次数

Linux高精度时间命令

我想知道是否有任何 Linux 命令(如 time 或 /usr/bin/time)可以以纳秒为单位高精度提供一个命令的执行时间

linux time gcc compilation

6
推荐指数
1
解决办法
5996
查看次数

我们如何衡量分类数据之间的相似距离?

我们如何衡量分类数据之间的相似距离?

示例:性别:男、女 数值:[0 - 100]、[200 - 300] 字符串:专业人士、初学者等,...

提前致谢。

distance similarity categorical-data

5
推荐指数
2
解决办法
1万
查看次数

docker run --cpuset 没有任何效果

我通过将 cpuset 指定为 1 个内核来启动一个 docker 容器:

docker run --cpuset-cpus="0"...
Run Code Online (Sandbox Code Playgroud)

第二个通过将 cpuset 指定为 4 个内核:

docker run --cpuset-cpus="0-3"...
Run Code Online (Sandbox Code Playgroud)

我在每个容器内启动了一个加载进程,并监控了两个容器的 CPU 消耗。

加载过程如下:

ffmpeg input > output
Run Code Online (Sandbox Code Playgroud)

我观察到两个容器之间的执行时间没有改善(没有加速)。

你知道为什么没有改进吗?具有 4 个核心的容器应该比 1 个核心容器运行得更快,对吗?

注意:对 1core 容器使用 top

CPU0%=100%
CPU1%=0
CPU2%=0
CPU3%=0
Run Code Online (Sandbox Code Playgroud)

使用 top 作为 4core 容器,docker 随机选择 4 个内核之一来启动进程。有时它会影响每个核心的 30%

CPU0%=0                  CPU0%=30%                   CPU0%=0
CPU1%=100%       or      CPU0%=30%            or     CPU0%=0
CPU2%=0                  CPU0%=30%                   CPU0%=0
CPU3%=0                  CPU0%=30%                   CPU0%=100%
Run Code Online (Sandbox Code Playgroud)

multicore resource-management cpu-usage docker cpuset

5
推荐指数
1
解决办法
4924
查看次数

docker cadvisor中的内存和CPU使用率定义

您如何定义docker中google cadvisor提供的内存使用率指标?它是动态堆栈大小,堆需求,高速缓存未命中,代码大小,交换内存还是RAM内存?以及cpu的累计使用量,以哪个度量单位计算?您如何定义它?是否有任何文档?

注意:我记得cadvisor容器将资源使用情况数据导出到influxDB。他要导出的指标包括:memory_usage,cpu_cumulative_usage等。

谢谢

memory cpu-usage memory-consumption docker cadvisor

5
推荐指数
0
解决办法
855
查看次数

GCC 针对 CPU 和内存使用的优化

有没有办法使用选项标志在 cpu 和内存方面优化 GCC 编译代码?使用 O3 而不是 01 会增加还是减少内存或 CPU 使用量?

memory gcc cpu-usage compiler-optimization

4
推荐指数
1
解决办法
3962
查看次数

GCC优化级别.哪个更好?

我专注于GCC编译程序的CPU /内存消耗.

执行使用O3编译的代码在资源方面总是如此贪婪吗?

是否有任何科学参考或规范显示不同级别的Mem/cpu消耗的差异?

处理这个问题的人通常关注这些优化对执行时间,编译代码大小和能量的影响.但是,我找不到太多关于资源消耗的工作(通过启用优化).

提前致谢.

optimization gcc compilation performance-testing compiler-optimization

1
推荐指数
1
解决办法
2906
查看次数

为什么java中的随机函数总是生成高值?

我在java中实现了一个测试数据生成器,用于生成java原始类型的随机值.可能的参数值的范围不受限制.例如,如果我想生成随机整数或浮点数,我会考虑所有可能的值(MAX_INT-MIN_INT).为此,我使用的东西如下:

  • 随机的().nextInt()
  • 随机的().nextLong()
  • 随机的().nextFloat()*Float.MAX_VALUE
  • 随机的().nextDouble()*Double.MAX_VALUE
  • 等等...

但是,这样做,我注意到生成的值总是很高(接近参数类型的最大值和最小值).例如,在100000次迭代之后,随机运算符未生成[-1000 - 1000]范围内的值.对于花车来说同样的事情,多头.等等,...

你能解释一下随机运算符在Java中的表现吗?当我们考虑Java类型的所有可能值时,为什么生成的值总是很高?

提前致谢.

java random automated-tests probability

-4
推荐指数
1
解决办法
212
查看次数