HarmonyOS鸿蒙Next编译构建C++工程编译时间不同机器差距较大的问题
HarmonyOS鸿蒙Next编译构建C++工程编译时间不同机器差距较大的问题
华为内部电脑 : (c++ 工程 大小 5m)
DevEco Studio 1.0.15.152 Sdk 3.0.1.86 编译工程构建hap的时候 configure 和 prebuild compileDebugNativeWithCmake 均需要40s,但是用其他电脑 同样的工程 ,编译构建时长正常,整个工程 构建出hap 包的时长不到 20s
外部环境:(car模板native c++工程)
DevEco Studio :+2.0.10.201 对外发布版 构建插件:2.0.0.7 gradle :6.3 构建时间如下:
configure 时间在 40秒左右,compileDebugNativeWithCmake工程在40s,其余Task 构建时间正常
分析c++工程构建 Task configure 和prebulid compileDebugNativeWithCmake 影响执行的步骤:
在configure阶段构建工具均执行力了:
[cmake] D:\HarmonySdk\3.0.1.93\native\3.0.1.93\build-tools\cmake\bin\cmake.exe -v -HC:\Users\Administrator\DevEcoStudioProjects\MyApplication2\entry\src\main\cpp\ -BC:\Users\Administrator\DevEcoStudioProjects\MyApplication2\entry\.cxx\debug\arm64-v8a -DOHOS_ARCH=ar
m64-v8a -D CMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\Administrator\DevEcoStudioProjects\MyApplication2\entry\build\intermediates\cmake\debug\obj\arm64-v8a -DCMAKE_BUILD_TYPE=Debug -DOHOS_SDK_NATIVE=D:\HarmonySdk\3.0.1.93\native\3.0.1.93 -DCMAKE_SYSTEM_NAME=OHOS -DCMAK
E_OHOS_ARCH_ABI=arm64-v8a -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_TOOLCHAIN_FILE=D:\HarmonySdk\3.0.1.93\native\3.0.1.93\build\cmake\ohos.toolchain.cmake -G Ninja -DCMAKE_MAKE_PROGRAM=D:\HarmonySdk\3.0.1.93\native\3.0.1.93\build-tools\cmake\bin\ninja.exe
该命令,是导致configure阶段和 compileDebugNativeWithCmake 阶段较长的原因:
该段命令调用了 sdk 内部的 cmake工具,该工具抛出以下命令,执行一个周期大概得花37s左右:
-- The C compiler identification is Clang 9.0.0
-- The CXX compiler identification is Clang 9.0.0
-- Check for working C compiler: D:/HarmonySdk/3.0.1.93/native/3.0.1.93/llvm/bin/clang.exe
-- Check for working C compiler: D:/HarmonySdk/3.0.1.93/native/3.0.1.93/llvm/bin/clang.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: D:/HarmonySdk/3.0.1.93/native/3.0.1.93/llvm/bin/clang++.exe
-- Check for working CXX compiler: D:/HarmonySdk/3.0.1.93/native/3.0.1.93/llvm/bin/clang++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/Administrator/DevEcoStudioProjects/MyApplication2/entry/.cxx/debug/arm64-v8a
但不同的机器执行该命令,运行以上步骤 时间差异较大时导致不同机器编译C++工程构建hap的的速度不一的主要原因
有没有哪位大佬对该段命令执行速度影响的原因比较清楚的,欢迎踊跃发言:
[cmake] D:\HarmonySdk\3.0.1.93\native\3.0.1.93\build-tools\cmake\bin\cmake.exe -v
-HC:\Users\Administrator\DevEcoStudioProjects\MyApplication2\entry\src\main\cpp\
-BC:\Users\Administrator\DevEcoStudioProjects\MyApplication2\entry\.cxx\debug\arm64-v8a
-DOHOS_ARCH=arm64-v8a
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\Administrator\DevEcoStudioProjects\MyApplication2\entry\build\intermediates\cmake\debug\obj\arm64-v8a
-DCMAKE_BUILD_TYPE=Debug
-DOHOS_SDK_NATIVE=D:\HarmonySdk\3.0.1.93\native\3.0.1.93 -DCMAKE_SYSTEM_NAME=OHOS
-DCMAK E_OHOS_ARCH_ABI=arm64-v8a
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
-DCMAKE_TOOLCHAIN_FILE=D:\HarmonySdk\3.0.1.93\native\3.0.1.93\build\cmake\ohos.toolchain.cmake
-G Ninja -DCMAKE_MAKE_PROGRAM=D:\HarmonySdk\3.0.1.93\native\3.0.1.93\build-tools\cmake\bin\ninja.exe
更多关于HarmonyOS鸿蒙Next编译构建C++工程编译时间不同机器差距较大的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。
更多关于HarmonyOS鸿蒙Next编译构建C++工程编译时间不同机器差距较大的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
欢迎各位对C++熟悉的大佬大咖踊跃回答,解决楼主的问题
在HarmonyOS鸿蒙Next中,C++工程的编译时间在不同机器上差距较大,可能由以下因素导致:
-
硬件配置差异:CPU核心数、主频、内存大小和硬盘类型(如SSD与HDD)直接影响编译速度。高性能硬件通常能显著缩短编译时间。
-
编译器优化:不同机器可能使用不同版本的编译器或优化设置,导致编译效率不同。确保所有机器使用相同编译器版本和优化参数。
-
并行编译:多核CPU支持并行编译,但不同机器的并行编译配置可能不同。检查并行编译设置是否一致。
-
缓存机制:部分机器可能启用了编译缓存(如ccache),而其他机器未启用,导致编译时间差异。确保缓存机制在所有机器上一致。
-
系统负载:编译时系统负载(如其他进程占用资源)会影响编译速度。确保编译时系统负载较低。
-
网络延迟:如果编译过程涉及远程依赖下载,网络延迟可能导致编译时间差异。确保网络环境稳定。
-
文件系统性能:不同机器的文件系统性能(如ext4、NTFS)可能影响编译速度。确保文件系统性能相近。
-
环境变量:不同机器的环境变量设置可能影响编译过程。检查环境变量是否一致。
通过排查以上因素,可以缩小不同机器上C++工程编译时间的差距。
在HarmonyOS鸿蒙Next中,C++工程编译时间在不同机器上差距较大,可能由以下原因导致:
-
硬件性能差异:CPU核心数、主频、内存大小和硬盘速度(如SSD vs HDD)直接影响编译速度。高性能硬件能显著缩短编译时间。
-
编译器版本与优化:不同机器上使用的编译器版本或优化选项可能不同,导致编译效率差异。确保所有机器使用相同版本和优化设置。
-
并行编译设置:
make -j
等并行编译选项在不同机器上的配置可能不同。根据机器核心数合理设置并行任务数。 -
依赖库与缓存:依赖库的编译状态和缓存情况不同也会影响编译时间。确保依赖库已预编译,并启用ccache等缓存工具。
-
系统负载:高系统负载会拖慢编译速度。编译时尽量关闭其他占用资源的程序。
建议统一硬件配置、编译器版本和编译选项,并合理设置并行任务数,以缩小编译时间差距。