为什么我的代码在代码块中运行得更快
Why my code runs faster if I build it in codeblocks?
我在代码块中用c++创建了一个小库(大约600行),我使用OMP和O3优化来构建它。当我尝试使用具有完全相同选项(-fopenmp -O3)的Makefile通过终端构建相同的代码时,它运行速度大约慢3倍。我需要在不同的机器上构建它,所以我需要通过终端而不是通过代码块来做这个过程。为什么会发生这种情况?这是我的Makefile,如果你感兴趣的话:
CC=g++
CFLAGS=
LDFLAGS= -fopenmp -O3 -std=c++11
SOURCES=main.cpp CNNFunctions.cpp
OBJECTS=$(SOURCES:.cpp=.o) EXECUTABLE=cnn
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
您的Makefile
是错误的。优化标志主要在编译时相关。至少试试:
CXX=g++
CXXFLAGS= -Wall -fopenmp -O3 -std=c++11 -mtune=native
LDFLAGS= -fopenmp
SOURCES=main.cpp CNNFunctions.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=cnn
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(LINK.cpp) $(OBJECTS) -o $@
对于链接时间优化,使用CXX=g++ -flto
和LDFLAGS=$(CXXFLAGS)
因为,与你所说的相反,你并没有使用完全相同的选项来构建它。
您的CFLAGS
为空,这些是您用于编译的标志。当你到达链接步骤时,你无法解决这个问题。
相关文章:
- 我的代码运行良好,但在游戏循环中中断
- 通过窗口从C++代码运行 WSL 命令
- 如何使用 lldb 查找我的代码运行的位置
- 无法在 VS Code 上使用代码运行程序运行C++文件
- 我的代码运行良好,但现在当尝试将其制作成模板时,我遇到了许多看似无关的错误。这是怎么回事?
- Visual Studio代码运行环境
- 如何从C++代码运行自定义 GPU tensorflow::op?
- 在 ZeroMQ 中绑定订阅者套接字并连接发布者套接字会在代码运行时给出错误.为什么
- 代码运行缓慢
- .NET CORE 2 DLL引用带有C 代码运行时错误
- C++ 中控制台代码运行时的分段错误
- C++ 菜单代码 - 运行另一个类
- 以下代码运行后,如何在程序再次运行之前清除用户声明的变量 empName
- 当我使用此合并排序代码运行时,输出错误
- 有哪些优化技巧可以使我的代码运行得更快
- 使 C 代码能够作为C++代码运行
- 错误代码LNK1561阻止我的代码运行
- 如果我用代码块编译代码,为什么我的代码运行速度更快
- 更改Linux用户从C/C 代码运行时间
- 为什么这段代码运行这么慢