|
|
Created:
4 years, 2 months ago by fbarchard1 Modified:
4 years, 2 months ago CC:
hubbe Target Ref:
refs/heads/master Project:
libyuv Visibility:
Public. |
DescriptionEnable optimize max for GN builds + update docs
Optimize max enables O2 for official builds. Normally release builds
are O2 but the official build is Os, affecting performance.
The GYP file was previously updated to enable optimize max,
which enables ltcg and O2.
Documentation updated to show GN builds in docs/getting_started.md
BUG=libyuv:642
R=kjellander@chromium.org
Committed: https://chromium.googlesource.com/libyuv/libyuv/+/4b3b310e660e44f1756c0b2383b8124b61ec6329
Patch Set 1 #Patch Set 2 : update documentation for GN builds #Patch Set 3 : android builds documented #Patch Set 4 : android builds documented #
Total comments: 25
Patch Set 5 : document is_asan=true #
Messages
Total messages: 10 (5 generated)
fbarchard@google.com changed reviewers: + thakis@chromium.org
Arm builds were -Os for both GYP and GN release builds. This enables -O2 for GN builds. Tested gn gen out/Release "--args=is_debug=false target_os=\"android\" target_cpu=\"arm64\"" ninja -v -j7 -C out/Release libyuv_unittest_apk Was LibYUVPlanarTest.TestHalfFloatPlane (4330 ms) Now LibYUVPlanarTest.TestHalfFloatPlane (2115 ms) Was gcc -Os [5/23] /usr/local/google/home/fbarchard/build/libyuv/libyuv/third_party/android_tools/ndk//toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-g++ -MMD -MF obj/source/libyuv.row_common.o.d -DV8_DEPRECATION_WARNINGS -D_FILE_OFFSET_BITS=64 -DNO_TCMALLOC -DDISABLE_NACL -DCHROMIUM_BUILD -DCR_CLANG_REVISION=277962-1 -DUSE_LIBJPEG_TURBO=1 -DENABLE_WEBRTC=1 -DENABLE_MEDIA_ROUTER=1 -DENABLE_BROWSER_CDMS -DENABLE_NOTIFICATIONS -DUSE_EXTERNAL_POPUP_MENU -DFIELDTRIAL_TESTING_ENABLED -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_SPELLCHECK=1 -DUSE_BROWSER_SPELLCHECKER=1 -DUSE_MINIKIN_HYPHENATION=1 -DENABLE_SUPERVISED_USERS=1 -DVIDEO_HOLE=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DENABLE_WEBVR -DSAFE_BROWSING_DB_REMOTE -DLIBYUV_NEON -DHAVE_JPEG -DUSE_LIBPCI=1 -DUSE_OPENSSL_CERTS=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DANDROID -D__GNU_SOURCE=1 -DHAVE_SYS_UIO_H -DANDROID_NDK_VERSION=r10e -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -D_FORTIFY_SOURCE=2 -Igen -I../../include -I../.. -I../../chromium/src/third_party/libjpeg_turbo --param=ssp-buffer-size=4 -Werror -fno-strict-aliasing -Wall -Wno-extra -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-unused-local-typedefs -ffunction-sections -funwind-tables -g -fno-short-enums -finline-limit=64 --sysroot=../../third_party/android_tools/ndk//platforms/android-21/arch-arm64 -Os -fno-ident -fdata-sections -ffunction-sections -funwind-tables -fno-exceptions -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -std=gnu++11 -Wno-narrowing -isystem../../third_party/android_tools/ndk//sources/cxx-stl/llvm-libc++/libcxx/include -isystem../../third_party/android_tools/ndk//sources/cxx-stl/llvm-libc++abi/libcxxabi/include -isystem../../third_party/android_tools/ndk//sources/android/support/include -c ../../source/row_common.cc -o obj/source/libyuv.row_common.o Similar for gn/gyp 32 and 64 bit. Now clang -O2 [1/51] ../../third_party/android_tools/ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-g++ -MMD -MF obj/libyuv/row_common.o.d -DHAVE_JPEG -DV8_DEPRECATION_WARNINGS -DENABLE_NOTIFICATIONS -DENABLE_BROWSER_CDMS -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_SPELLCHECK=1 -DUSE_BROWSER_SPELLCHECKER=1 -DUSE_OPENSSL_CERTS=1 -DNO_TCMALLOC -DUSE_EXTERNAL_POPUP_MENU=1 -DENABLE_WEBRTC=1 -DDISABLE_NACL -DENABLE_SUPERVISED_USERS=1 -DVIDEO_HOLE=1 -DSAFE_BROWSING_DB_REMOTE -DCHROMIUM_BUILD -DENABLE_MEDIA_ROUTER=1 -DENABLE_WEBVR -DFIELDTRIAL_TESTING_ENABLED -D_FILE_OFFSET_BITS=64 -DANDROID -DHAVE_SYS_UIO_H -DANDROID_NDK_VERSION=r10e -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 -D__GNU_SOURCE=1 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DUSE_LIBJPEG_TURBO=1 -I../.. -Igen -I../../include -I../../third_party/libjpeg_turbo -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -funwind-tables -fPIC -pipe -ffunction-sections -fno-short-enums -finline-limit=64 -Wall -Werror -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-unused-parameter -g2 --sysroot=../../third_party/android_tools/ndk/platforms/android-21/arch-arm64 -fvisibility=hidden -O2 -fno-ident -fdata-sections -ffunction-sections -fno-threadsafe-statics -fvisibility-inlines-hidden -std=gnu++11 -Wno-narrowing -fno-rtti -isystem../../third_party/android_tools/ndk/sources/cxx-stl/llvm-libc++/libcxx/include -isystem../../third_party/android_tools/ndk/sources/cxx-stl/llvm-libc++abi/libcxxabi/include -isystem../../third_party/android_tools/ndk/sources/android/support/include -fno-exceptions -c ../../source/row_common.cc -o obj/libyuv/row_common.o Disassembly ./chromium/src/third_party/android_tools/ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objdump -d ./out/Release/obj/libyuv/row_common.o >row_common.txt Was 0000000000000000 <HalfFloatRow_C>: 0: 1c0001c1 ldr s1, 38 <HalfFloatRow_C+0x38> 4: d2800004 mov x4, #0x0 // #0 8: 1e210800 fmul s0, s0, s1 c: 6b04005f cmp w2, w4 10: 5400012d b.le 34 <HalfFloatRow_C+0x34> 14: 78647803 ldrh w3, [x0,x4,lsl #1] 18: 1e220061 scvtf s1, w3 1c: 1e200821 fmul s1, s1, s0 20: 1e260023 fmov w3, s1 24: 530d7c63 lsr w3, w3, #13 28: 78247823 strh w3, [x1,x4,lsl #1] 2c: 91000484 add x4, x4, #0x1 30: 17fffff7 b c <HalfFloatRow_C+0xc> 34: d65f03c0 ret 38: 07800000 .word 0x07800000 Now 0000000000000000 <HalfFloatRow_C>: 0: 1c000ec1 ldr s1, 1d8 <HalfFloatRow_C+0x1d8> 4: 6b1f005f cmp w2, wzr 8: 1e210800 fmul s0, s0, s1 c: 54000ced b.le 1a8 <HalfFloatRow_C+0x1a8> 10: 91004003 add x3, x0, #0x10 14: 91004024 add x4, x1, #0x10 18: eb03003f cmp x1, x3 1c: 1a9f37e5 cset w5, cs 20: eb04001f cmp x0, x4 24: 1a9f37e3 cset w3, cs 28: 2a0300a3 orr w3, w5, w3 2c: 34000c03 cbz w3, 1ac <HalfFloatRow_C+0x1ac> 30: 71001c5f cmp w2, #0x7 34: 54000bc9 b.ls 1ac <HalfFloatRow_C+0x1ac> 38: 51002043 sub w3, w2, #0x8 3c: 4e040403 dup v3.4s, v0.s[0] 40: 53037c63 lsr w3, w3, #3 44: aa0003e7 mov x7, x0 48: 11000463 add w3, w3, #0x1 4c: aa0103e6 mov x6, x1 50: 52800005 mov w5, #0x0 // #0 54: 531d7064 lsl w4, w3, #3 58: 3cc104e1 ldr q1, [x7],#16 5c: 110004a5 add w5, w5, #0x1 60: 6b0300bf cmp w5, w3 64: 2f10a422 uxtl v2.4s, v1.4h 68: 6f10a421 uxtl2 v1.4s, v1.8h 6c: 4e21d842 scvtf v2.4s, v2.4s 70: 4e21d821 scvtf v1.4s, v1.4s 74: 6e23dc42 fmul v2.4s, v2.4s, v3.4s 78: 6e23dc21 fmul v1.4s, v1.4s, v3.4s 7c: 6f330442 ushr v2.4s, v2.4s, #13 80: 6f330421 ushr v1.4s, v1.4s, #13 84: 0e612844 xtn v4.4h, v2.4s 88: 4e612824 xtn2 v4.8h, v1.4s 8c: 3c8104c4 str q4, [x6],#16 90: 54fffe43 b.cc 58 <HalfFloatRow_C+0x58> 94: 6b04005f cmp w2, w4 98: 54000880 b.eq 1a8 <HalfFloatRow_C+0x1a8> 9c: 937f7c83 sbfiz x3, x4, #1, #32 a0: 11000485 add w5, w4, #0x1 a4: 6b05005f cmp w2, w5 a8: 78636805 ldrh w5, [x0,x3] ac: 1e2200a1 scvtf s1, w5 b0: 1e200821 fmul s1, s1, s0 b4: 1e260025 fmov w5, s1 b8: 530d7ca5 lsr w5, w5, #13 bc: 78236825 strh w5, [x1,x3] c0: 5400074d b.le 1a8 <HalfFloatRow_C+0x1a8> c4: 91000866 add x6, x3, #0x2 c8: 11000885 add w5, w4, #0x2 cc: 6b05005f cmp w2, w5 d0: 78666805 ldrh w5, [x0,x6] d4: 1e2200a1 scvtf s1, w5 d8: 1e200821 fmul s1, s1, s0 dc: 1e260025 fmov w5, s1 e0: 530d7ca5 lsr w5, w5, #13 e4: 78266825 strh w5, [x1,x6] e8: 5400060d b.le 1a8 <HalfFloatRow_C+0x1a8> ec: 91001066 add x6, x3, #0x4 f0: 11000c85 add w5, w4, #0x3 f4: 6b05005f cmp w2, w5 f8: 78666805 ldrh w5, [x0,x6] fc: 1e2200a1 scvtf s1, w5 100: 1e200821 fmul s1, s1, s0 104: 1e260025 fmov w5, s1 108: 530d7ca5 lsr w5, w5, #13 10c: 78266825 strh w5, [x1,x6] 110: 540004cd b.le 1a8 <HalfFloatRow_C+0x1a8> 114: 91001866 add x6, x3, #0x6 118: 11001085 add w5, w4, #0x4 11c: 6b05005f cmp w2, w5 120: 78666805 ldrh w5, [x0,x6] 124: 1e2200a1 scvtf s1, w5 128: 1e200821 fmul s1, s1, s0 12c: 1e260025 fmov w5, s1 130: 530d7ca5 lsr w5, w5, #13 134: 78266825 strh w5, [x1,x6] 138: 5400038d b.le 1a8 <HalfFloatRow_C+0x1a8> 13c: 91002066 add x6, x3, #0x8 140: 11001485 add w5, w4, #0x5 144: 6b05005f cmp w2, w5 148: 78666805 ldrh w5, [x0,x6] 14c: 1e2200a1 scvtf s1, w5 150: 1e200821 fmul s1, s1, s0 154: 1e260025 fmov w5, s1 158: 530d7ca5 lsr w5, w5, #13 15c: 78266825 strh w5, [x1,x6] 160: 5400024d b.le 1a8 <HalfFloatRow_C+0x1a8> 164: 91002865 add x5, x3, #0xa 168: 11001884 add w4, w4, #0x6 16c: 6b04005f cmp w2, w4 170: 78656802 ldrh w2, [x0,x5] 174: 1e220041 scvtf s1, w2 178: 1e200821 fmul s1, s1, s0 17c: 1e260022 fmov w2, s1 180: 530d7c42 lsr w2, w2, #13 184: 78256822 strh w2, [x1,x5] 188: 5400010d b.le 1a8 <HalfFloatRow_C+0x1a8> 18c: 91003063 add x3, x3, #0xc 190: 78636800 ldrh w0, [x0,x3] 194: 1e220001 scvtf s1, w0 198: 1e200820 fmul s0, s1, s0 19c: 1e260000 fmov w0, s0 1a0: 530d7c00 lsr w0, w0, #13 1a4: 78236820 strh w0, [x1,x3] 1a8: d65f03c0 ret 1ac: d2800004 mov x4, #0x0 // #0 1b0: 78647803 ldrh w3, [x0,x4,lsl #1] 1b4: 1e220061 scvtf s1, w3 1b8: 1e200821 fmul s1, s1, s0 1bc: 1e260023 fmov w3, s1 1c0: 530d7c63 lsr w3, w3, #13 1c4: 78247823 strh w3, [x1,x4,lsl #1] 1c8: 91000484 add x4, x4, #0x1 1cc: 6b04005f cmp w2, w4 1d0: 54ffff0c b.gt 1b0 <HalfFloatRow_C+0x1b0> 1d4: d65f03c0 ret 1d8: 07800000 .word 0x07800000
kjellander@chromium.org changed reviewers: + kjellander@chromium.org
Please update CL description to mention that you're also updating a lot of documentation for GN. https://codereview.chromium.org/2386093003/diff/60001/BUILD.gn File BUILD.gn (right): https://codereview.chromium.org/2386093003/diff/60001/BUILD.gn#newcode101 BUILD.gn:101: # Always enable optimization under NaCl to workaround crbug.com/538243 . Change to: Always enable optimization for Release and NaCl builds (to workaround crbug.com/538243). https://codereview.chromium.org/2386093003/diff/60001/BUILD.gn#newcode102 BUILD.gn:102: # enable O2 and ltcg. You might want to rephrase this to something like: This enables O2 and ltcg on Windows. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md File docs/getting_started.md (left): https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:306: export GYP_DEFINES="target_arch=arm" You can still build for ARM Linux. I think target_cpu="arm" is all you need to pass to GN --args and the rest is taken care of. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:344: ## Memory tools You can still use all these memory tools after switching to GN, so you might want to update these instead of removing. For most of them, you just pass is_asan=true to GN --args etc. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:350: set GYP_DEFINES=build_for_tool=drmemory target_arch=ia32 AFAIK, there's no build_for_tool= variable. I don't think it was needed though, as long as the test is invoked using the same wrapper script as before. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:393: GYP_DEFINES="clang=0 target_arch=x64 build_for_tool=tsan" python gyp_libyuv This is the old TSan, thus no longer working. For the newer one (v2) that's been around for a couple of years now, you just pass is_tsan=true to GN --args. You can't disable clang though. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:417: out\Release\libyuv_unittest.exe --gtest_filter=*I420ToARGB_Opt These no longer work? https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:438: git cl upload -r a-reviewer@chomium.org -s typo: should be chromium.org https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md File docs/getting_started.md (right): https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:73: call gn gen out/Release "--args=is_debug=false is_official_build=false target_cpu=\"x86\"" I suggest leaving out is_official_build=false since that's the default value. Does 'call' provide any actual benefit on Windows vs running only 'gn' ? https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:73: call gn gen out/Release "--args=is_debug=false is_official_build=false target_cpu=\"x86\"" I find it easier to read without the escaped double-quotes. You can accomplish that with single-quotes around the --arg= string being passed: --args='is_debug=false is_official_build=false target_cpu="x86"' I also think it looks strange to pass " before --args= even if that appears to work. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:75: ninja -j7 -v -C out/Release I'd also leave out -j7 since we can't really make any assumptions on other developer's machines. ninja auto-detects the number of available cores on the system and sets the number of parallel jobs accordingly. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:98: ### OSX and Linux OSX -> macOS these days :) https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:141: This section needs an update to GN build documentation. Remove this line since you actually does provide Android build instructions with GN now. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:150: ninja -j7 -v -C out/Debug libyuv_unittest_apk There's no _apk suffixed target for GN. Just build libyuv_unittest
added arm linux and sanitizer doc. https://codereview.chromium.org/2386093003/diff/60001/BUILD.gn File BUILD.gn (right): https://codereview.chromium.org/2386093003/diff/60001/BUILD.gn#newcode101 BUILD.gn:101: # Always enable optimization under NaCl to workaround crbug.com/538243 . On 2016/10/04 06:06:21, kjellander_chromium wrote: > Change to: > Always enable optimization for Release and NaCl builds (to workaround > crbug.com/538243). Done. https://codereview.chromium.org/2386093003/diff/60001/BUILD.gn#newcode102 BUILD.gn:102: # enable O2 and ltcg. On 2016/10/04 06:06:21, kjellander_chromium wrote: > You might want to rephrase this to something like: > This enables O2 and ltcg on Windows. Done. Its not just for Windows. Arm release builds dramatically slower in Release mode with -Os. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md File docs/getting_started.md (left): https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:306: export GYP_DEFINES="target_arch=arm" On 2016/10/04 06:06:21, kjellander_chromium wrote: > You can still build for ARM Linux. I think target_cpu="arm" is all you need to > pass to GN --args and the rest is taken care of. Done. But it has build errors. I actually used this with a chroot for chromeos, not regular linux. The crosstool could point to any set of tools. But I'll update the doc, and we can decide if the errors are worth fixing. ninja -j1 -v -C out/Release libyuv_unittest ninja: Entering directory `out/Release' [1/61] python "../../build/toolchain/gcc_ar_wrapper.py" --output=obj/libyuv_neon.a --ar="aarch64-linux-gnu-ar" rcsD @"obj/libyuv_neon.a.rsp" FAILED: obj/libyuv_neon.a python "../../build/toolchain/gcc_ar_wrapper.py" --output=obj/libyuv_neon.a --ar="aarch64-linux-gnu-ar" rcsD @"obj/libyuv_neon.a.rsp" Traceback (most recent call last): File "../../build/toolchain/gcc_ar_wrapper.py", line 71, in <module> sys.exit(main()) File "../../build/toolchain/gcc_ar_wrapper.py", line 67, in main return subprocess.call(CommandToRun(command)) File "/usr/lib/python2.7/subprocess.py", line 522, in call return Popen(*popenargs, **kwargs).wait() File "/usr/lib/python2.7/subprocess.py", line 710, in __init__ errread, errwrite) File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory ninja: build stopped: subcommand failed. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:344: ## Memory tools On 2016/10/04 06:06:21, kjellander_chromium wrote: > You can still use all these memory tools after switching to GN, so you might > want to update these instead of removing. For most of them, you just pass > is_asan=true to GN --args etc. Done. My intent is to fill in documentation as needed. deprecated.md still documents the old ways to get these tools, and will work for a bit longer. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:350: set GYP_DEFINES=build_for_tool=drmemory target_arch=ia32 On 2016/10/04 06:06:21, kjellander_chromium wrote: > AFAIK, there's no build_for_tool= variable. I don't think it was needed though, > as long as the test is invoked using the same wrapper script as before. Done. I'll document it as just the runtime tool, but I thought you still needed an instrumented build. TODO drmemory is part of a larger toolchain which includes cpu emulation similar to intelsde, so I should also document that for windows. I think the sanitizers may work for windows, if built with clang? Will try it at some point and document. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md File docs/getting_started.md (right): https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:73: call gn gen out/Release "--args=is_debug=false is_official_build=false target_cpu=\"x86\"" On 2016/10/04 06:06:21, kjellander_chromium wrote: > I suggest leaving out is_official_build=false since that's the default value. Done. > Does 'call' provide any actual benefit on Windows vs running only 'gn' ? Acknowledged. From a command line it will work without call, but from a batch file it wont... it will exit the batch file after the first gn. I'm copying these instructions directly to/from scripts I use to ensure they work. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:75: ninja -j7 -v -C out/Release On 2016/10/04 06:06:21, kjellander_chromium wrote: > I'd also leave out -j7 since we can't really make any assumptions on other > developer's machines. ninja auto-detects the number of available cores on the > system and sets the number of parallel jobs accordingly. Acknowledged. If you do more than one thing on the machine, its best to specify less than all your CPUs or it will lock up. Especially on Windows where there is a high cpu cost to security software, and the machine becomes unusable during the build. My experiments found -j7 was a sweet spot for performance... beyond that, on a 32 core machine, had very little benefit. Beyond your max cpus and performance degrades a bit. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:98: ### OSX and Linux On 2016/10/04 06:06:21, kjellander_chromium wrote: > OSX -> macOS these days :) Done. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:141: This section needs an update to GN build documentation. On 2016/10/04 06:06:21, kjellander_chromium wrote: > Remove this line since you actually does provide Android build instructions with > GN now. Acknowledged. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:150: ninja -j7 -v -C out/Debug libyuv_unittest_apk On 2016/10/04 06:06:21, kjellander_chromium wrote: > There's no _apk suffixed target for GN. > > Just build libyuv_unittest Done.
Description was changed from ========== Enable optimize max for arm in GN BUG=libyuv:642 ========== to ========== Enable optimize max for GN builds. Optimize max enables O2 for official builds. Normally release builds are O2 but the official build is Os, affecting performance. The GYP file was previously updated to enable optimize max, which enables ltcg and O2. Documentation updated to show GN builds in docs/getting_started.md BUG=libyuv:642 ==========
Description was changed from ========== Enable optimize max for GN builds. Optimize max enables O2 for official builds. Normally release builds are O2 but the official build is Os, affecting performance. The GYP file was previously updated to enable optimize max, which enables ltcg and O2. Documentation updated to show GN builds in docs/getting_started.md BUG=libyuv:642 ========== to ========== Enable optimize max for GN builds + update docs Optimize max enables O2 for official builds. Normally release builds are O2 but the official build is Os, affecting performance. The GYP file was previously updated to enable optimize max, which enables ltcg and O2. Documentation updated to show GN builds in docs/getting_started.md BUG=libyuv:642 ==========
lgtm, I added " + update docs" to the title. https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md File docs/getting_started.md (right): https://codereview.chromium.org/2386093003/diff/60001/docs/getting_started.md... docs/getting_started.md:75: ninja -j7 -v -C out/Release On 2016/10/04 18:23:45, fbarchard1 wrote: > On 2016/10/04 06:06:21, kjellander_chromium wrote: > > I'd also leave out -j7 since we can't really make any assumptions on other > > developer's machines. ninja auto-detects the number of available cores on the > > system and sets the number of parallel jobs accordingly. > > Acknowledged. > If you do more than one thing on the machine, its best to specify less than all > your CPUs or it will lock up. Especially on Windows where there is a high cpu > cost to security software, and the machine becomes unusable during the build. > My experiments found -j7 was a sweet spot for performance... beyond that, on a > 32 core machine, had very little benefit. Beyond your max cpus and performance > degrades a bit. Alright, fair enough (and libyuv builds so quickly anyway so as you say the diffierent is probably insignificant)
Description was changed from ========== Enable optimize max for GN builds + update docs Optimize max enables O2 for official builds. Normally release builds are O2 but the official build is Os, affecting performance. The GYP file was previously updated to enable optimize max, which enables ltcg and O2. Documentation updated to show GN builds in docs/getting_started.md BUG=libyuv:642 ========== to ========== Enable optimize max for GN builds + update docs Optimize max enables O2 for official builds. Normally release builds are O2 but the official build is Os, affecting performance. The GYP file was previously updated to enable optimize max, which enables ltcg and O2. Documentation updated to show GN builds in docs/getting_started.md BUG=libyuv:642 R=kjellander@chromium.org Committed: https://chromium.googlesource.com/libyuv/libyuv/+/4b3b310e660e44f1756c0b2383b... ==========
Message was sent while issue was closed.
Committed patchset #5 (id:80001) manually as 4b3b310e660e44f1756c0b2383b8124b61ec6329 (presubmit successful). |