为什么我的代码在代码块中构建时运行得更快?

 孝敏敏__216 发布于 2022-12-27 09:19

我在Codeblocks中用C++创建了一个小型库(大约600行),我正在使用OMP和O3优化来构建它.当我尝试使用具有完全相同选项的Makefile(-fopenmp -O3)通过终端构建相同的代码时,它运行速度慢了3倍.我需要在各种机器上构建它,所以我需要通过终端而不是通过Codeblocks来完成这个过程.为什么会这样?如果你有兴趣,这是我的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 $@

小智.. 5

因为,与您的主张相反,您并没有使用完全相同的选项构建它.

CFLAGS是空的,那些是你用来编译的标志.到达链接步骤时无法解决此问题.

2 个回答
  • 因为,与您的主张相反,您并没有使用完全相同的选项构建它.

    CFLAGS是空的,那些是你用来编译的标志.到达链接步骤时无法解决此问题.

    2022-12-27 09:21 回答
  • 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++ -fltoLDFLAGS=$(CXXFLAGS)

    2022-12-27 09:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有