MozTW 討論區 https://forum.moztw.org/ |
|
[Sm] Seamonkey 2.20 en win x64 PGO https://forum.moztw.org/viewtopic.php?f=43&t=20467 |
第 4 頁 (共 7 頁) |
發表人: | s793016 [ 2011-08-08, 08:11 ] |
文章主題 : | Re: [Sm] Seamonkey 2.2 win32/SSE2/PGO |
新增 2.2 SSE2 PGO jemalloc 版。 本版開始加打補丁修正 bug 664095 問題 vc10 + 使用舊的 jemalloc 方法 (crt 原始碼用 vc9) - 來源: 對岸能人 參考 palemoon 對 crt 及 js 加入 sse2 編譯選項 |
發表人: | s793016 [ 2011-08-13, 08:33 ] |
文章主題 : | Re: [Sm] Seamonkey 2.2 win32/SSE2/PGO |
新增 2.2 SSE2 PGO 官方 jemalloc 版。 vc10 + 使用新的 jemalloc 方法 參考 palemoon 對 crt 及 js 加入 sse2 編譯選項 所以目前有三版 2.2: 官版 - vs2005 + Jemalloc Old Jemalloc - vs2010 + Old Jemalloc (VC9 CRT 源碼) New Jemalloc - vs2010 + New Jemalloc (bug 515492) ==================================== 來一個小比較,測試環境 Win7 x64 + 12G RAM + i5-750: 官版 - vs2005 + Jemalloc v8 benchmark v6 - 4208 Sun Spider 0.9.1 - 245.9 Kraken 1.1 - 5505.7 Old Jemalloc - vs2010 + Old Jemalloc (VC9 CRT 源碼) v8 benchmark v6 - 4220 Sun Spider 0.9.1 - 236.2 Kraken 1.1 - 5321.9 New Jemalloc - vs2010 + New Jemalloc (bug 515492) v8 benchmark v6 - 4090 Sun Spider 0.9.1 - 234.3 Kraken 1.1 - 5302.5 Google Chrome 15.0.849.0 dev - 對照組 v8 benchmark v6 - 8594 Sun Spider 0.9.1 - 263.5 Kraken 1.1 - 3534.4 ps: 因為 sun spider 跟 kraken 的比較 url 太長,bbcode url 代碼用了會錯亂,所以我就不放了。 |
發表人: | s793016 [ 2011-08-17, 10:04 ] |
文章主題 : | Re: [Sm] Seamonkey 2.3 win32/SSE2/PGO |
新增 2.3 SSE2 PGO 官方 jemalloc 版。 vc10 + 使用新的 jemalloc 方法 參考 palemoon 對 crt 及 js 加入 sse2 編譯選項 8/21 更新 mozjs 加入 pgo 最佳化 |
發表人: | s793016 [ 2011-09-03, 23:21 ] |
文章主題 : | Re: [Sm] Seamonkey 2.3.2 win32/SSE2/PGO |
新增 2.3.2 SSE2 PGO 官方 jemalloc 版。 ps:
|
發表人: | s793016 [ 2011-09-10, 23:29 ] |
文章主題 : | Re: [Sm] Seamonkey 2.3.3 win32/SSE2/PGO |
新增 2.3.3 SSE2 PGO 官方 jemalloc 版。 |
發表人: | D555 [ 2011-09-26, 11:39 ] |
文章主題 : | Re: [Sm] Seamonkey 2.3.3 win32/SSE2/PGO |
s793016 Greetings! Would you please creating next builds with omni.jar file packing ? (for more optimization) |
發表人: | s793016 [ 2011-09-26, 22:16 ] |
文章主題 : | Re: [Sm] Seamonkey 2.3.3 win32/SSE2/PGO |
D555 寫: s793016 Greetings! Would you please creating next builds with omni.jar file packing ? (for more optimization) Sorry my English is very very poor. I need study what is it. XD I tried build 2.4 beta for 3 weeks, no luck. PGU build cannot run , just crash, PGI build doesn't crash. |
發表人: | D555 [ 2011-09-26, 23:22 ] |
文章主題 : | Re: [Sm] Seamonkey 2.3.3 win32/SSE2/PGO |
I don't know much too, but there's a description there... |
發表人: | s793016 [ 2011-09-26, 23:39 ] |
文章主題 : | Re: [Sm] Seamonkey 2.3.3 win32/SSE2/PGO |
D555 寫: I don't know much too, but there's a description there... Sorry, my English is very very poor. Thanks for that information. By the way, I just searched google and I just know how to package omni.jar. After PGO build completed, chdir into $obj dir and enter "make package", and wait a while later, omni.jar and all binary file will placed into $obj\mozilla\dist\seamoney folder. |
發表人: | 某A [ 2011-10-20, 23:04 ] |
文章主題 : | Re: [Sm] Seamonkey 2.3.3 win32/SSE2/PGO |
http://xdriftdoll.blogspot.com/2011/10/blog-post.html 意外地發現用Gecko 6.0引擎的Seamonkey 2.3.3可以調校到超越官方版本Fx/Gecko 7.0很多。 真的不錯~我考慮把雷鳥換過來了… |
發表人: | s793016 [ 2011-10-30, 14:47 ] |
文章主題 : | [Sm] Seamonkey 2.4.1 win32/SSE2/PGO |
新增 2.4.1 SSE2 PGO 版 2.4 以上版本,目前 pgo 調教時已知有兩站如果加入調教後,則 pgo 會當掉無法使用,只能暫時將該兩站排除在外,但也可能因此性能會下降。 |
發表人: | dongyuanxun [ 2011-10-30, 23:00 ] |
文章主題 : | Re: [Sm] Seamonkey 2.4.1 win32/SSE2/PGO |
s793016 寫: 新增 2.4.1 SSE2 PGO 版 2.4 以上版本,目前 pgo 調教時已知有兩站如果加入調教後,則 pgo 會當掉無法使用,只能暫時將該兩站排除在外,但也可能因此性能會下降。 啥网站? 我现在一般就采用自己的betterpgo了,暂时还没发现当掉的情形 |
發表人: | s793016 [ 2011-10-30, 23:48 ] |
文章主題 : | Re: [Sm] Seamonkey 2.4.1 win32/SSE2/PGO |
dongyuanxun 寫: s793016 寫: 新增 2.4.1 SSE2 PGO 版 2.4 以上版本,目前 pgo 調教時已知有兩站如果加入調教後,則 pgo 會當掉無法使用,只能暫時將該兩站排除在外,但也可能因此性能會下降。 啥网站? 我现在一般就采用自己的betterpgo了,暂时还没发现当掉的情形 ECMA Script test 262 Dromaeo - Run All Tests 也可能不是這兩站的問題,因為只有這兩站 pgi 跑一次要各 30 分鐘以上時間。猜想跟 firefox 7 導入的 memory 機制有關,因為我的 seamonkey 2.3.3 以下也是這樣跑,pgo 版本啟動從來沒當過。 |
發表人: | dongyuanxun [ 2011-10-31, 14:42 ] |
文章主題 : | Re: [Sm] Seamonkey 2.4.1 win32/SSE2/PGO |
我FF6跑过这两个测试,没有当过 因为这两个测试时间太长,所以我FF7就没有引入过 不知道你打了额外的补丁没,我记得要打个SSE2强制到SSE的patch,也是为了避免PGO的crash 就是这个bug: https://bugzilla.mozilla.org/show_bug.cgi?id=595653 |
發表人: | s793016 [ 2011-10-31, 23:45 ] |
文章主題 : | Re: [Sm] Seamonkey 2.4.1 win32/SSE2/PGO |
dongyuanxun 寫: 我FF6跑过这两个测试,没有当过 因为这两个测试时间太长,所以我FF7就没有引入过 不知道你打了额外的补丁没,我记得要打个SSE2强制到SSE的patch,也是为了避免PGO的crash 就是这个bug: https://bugzilla.mozilla.org/show_bug.cgi?id=595653 ff6 = seamonkey 2.3.x ff7 = seamonkey 2.4.x ff8 = seamonkey 2.5.x 您舉 ff6 只是得到我 seamonkey 2.3.x 可以正常的結論而已 ff7 或 ff8 beta 您可以試試,pgi 跑其中一個站就可以,不用全部調教。 我因為這個問題所以 seamonkey 2.4 一直在 pgo 後,啟動當掉 (mozjs.dll fault) 下面是我用的 seamonkey 2.4.x 補丁: 代碼: diff -urN comm-release/mozilla/security/coreconf/WIN32.mk comm-release-sm/mozilla/security/coreconf/WIN32.mk
--- comm-release/mozilla/security/coreconf/WIN32.mk 2010-05-05 03:18:33 +0800 +++ comm-release-sm/mozilla/security/coreconf/WIN32.mk 2010-06-23 23:54:06 +0800 @@ -101,11 +101,15 @@ _GEN_IMPORT_LIB=-Wl,--out-implib,$(IMPORT_LIBRARY) DLLFLAGS += -mno-cygwin -o $@ -shared -Wl,--export-all-symbols $(if $(IMPORT_LIBRARY),$(_GEN_IMPORT_LIB)) ifdef BUILD_OPT + ifeq ($(MOZ_OPTIMIZE),2) + OPTIMIZER += $(MOZ_OPTIMIZE_FLAGS) + else ifeq (11,$(ALLOW_OPT_CODE_SIZE)$(OPT_CODE_SIZE)) OPTIMIZER += -Os else OPTIMIZER += -O2 endif + endif DEFINES += -UDEBUG -U_DEBUG -DNDEBUG else OPTIMIZER += -g @@ -125,11 +129,15 @@ endif ifdef BUILD_OPT OS_CFLAGS += -MD + ifeq ($(MOZ_OPTIMIZE),2) + OPTIMIZER += $(MOZ_OPTIMIZE_FLAGS) + else ifeq (11,$(ALLOW_OPT_CODE_SIZE)$(OPT_CODE_SIZE)) OPTIMIZER += -O1 else OPTIMIZER += -O2 endif + endif DEFINES += -UDEBUG -U_DEBUG -DNDEBUG DLLFLAGS += -OUT:"$@" ifdef MOZ_DEBUG_SYMBOLS diff -urN comm-release/mozilla/security/coreconf/WINCE.mk comm-release-sm/mozilla/security/coreconf/WINCE.mk --- comm-release/mozilla/security/coreconf/WINCE.mk 2010-05-05 03:18:33 +0800 +++ comm-release-sm/mozilla/security/coreconf/WINCE.mk 2010-06-23 23:54:06 +0800 @@ -87,7 +87,11 @@ ifdef BUILD_OPT # OS_CFLAGS += -MD + ifeq ($(MOZ_OPTIMIZE),2) + OPTIMIZER += $(MOZ_OPTIMIZE_FLAGS) + else OPTIMIZER += -O2 + endif DEFINES += -UDEBUG -U_DEBUG -DNDEBUG DLLFLAGS += -OUT:"$@" else diff -urN comm-release/mozilla/security/manager/Makefile.in comm-release-sm/mozilla/security/manager/Makefile.in --- comm-release/mozilla/security/manager/Makefile.in 2010-05-05 03:18:33 +0800 +++ comm-release-sm/mozilla/security/manager/Makefile.in 2010-06-23 23:54:07 +0800 @@ -43,6 +43,8 @@ include $(DEPTH)/config/autoconf.mk +export MOZ_OPTIMIZE MOZ_OPTIMIZE_FLAGS MOZ_OPTIMIZE_LDFLAGS MOZ_OPTIMIZE_SIZE_TWEAK + MODULE = psm ifndef MOZ_NATIVE_NSS diff -urN comm-release/mozilla/js/src/ctypes/libffi/ltmain.sh comm-release-sm/mozilla/js/src/ctypes/libffi/ltmain.sh --- comm-release/mozilla/js/src/ctypes/libffi/ltmain.sh +++ comm-release-sm/mozilla/js/src/ctypes/libffi/ltmain.sh @@ -4469,16 +4469,26 @@ func_mode_link () no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; + # Avoid matching MSVC linker option. + -LARGEADDRESSAWARE) + continue + ;; + + # Avoid matching MSVC linker option. + -LTCG) + continue + ;; + -L*) func_stripname '-L' '' "$arg" dir=$func_stripname_result if test -z "$dir"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" diff -urN comm-release/config/rules.mk comm-release-sm/config/rules.mk --- comm-release/config/rules.mk 2010-05-05 03:14:54 +0800 +++ comm-release-sm/config/rules.mk 2010-06-23 23:54:01 +0800 @@ -963,7 +963,7 @@ $(PROGRAM:$(BIN_SUFFIX)=) $(DIST)/$(MOZ_APP_NAME) endif ifdef SHARED_LIBRARY - $(PYTHON) $(topsrcdir)/build/win32/pgomerge.py \ + $(PYTHON) $(MOZILLA_SRCDIR)/build/win32/pgomerge.py \ $(SHARED_LIBRARY_NAME) $(DIST)/$(MOZ_APP_NAME) endif endif # SHARED_LIBRARY || PROGRAM diff -urN comm-release/mozilla/js/src/Makefile.in comm-release-sm/mozilla/js/src/Makefile.in --- comm-release/mozilla/js/src/Makefile.in +++ comm-release-sm/mozilla/js/src/Makefile.in @@ -102,19 +102,16 @@ else # not GNU_CXX ifeq ($(OS_ARCH),SunOS) MODULE_OPTIMIZE_FLAGS = -xO4 endif ifeq ($(OS_ARCH),WINNT) MODULE_OPTIMIZE_FLAGS = -O2 endif endif -ifeq ($(OS_ARCH),WINNT) -NO_PROFILE_GUIDED_OPTIMIZE = 1 -endif # JavaScript must be built shared, even for static builds, as it is used by # other modules which are always built shared. Failure to do so results in # the js code getting copied into xpinstall and jsd as well as mozilla-bin, # and then the static data cells used for locking no longer work. # # In fact, we now build both a static and a shared library, as the # JS shell would like to link to the static library. @@ -1074,4 +1074,11 @@ # # END kludges for the Nitro assembler ############################################### +# Optimizer bug with MSVC PGO (Bug 595653) +ifeq (WINNT_1,$(OS_ARCH)_$(MOZ_PROFILE_GENERATE)$(MOZ_PROFILE_USE)) +RegexCompiler.$(OBJ_SUFFIX): RegexCompiler.cpp $(GLOBAL_DEPS) + $(REPORT_BUILD) + @$(MAKE_DEPS_AUTO_CXX) + $(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS:arch:SSE2=arch:SSE) $(_VPATH_SRCS) +endif diff --git a/configure.in b/configure.in --- a/configure.in +++ b/configure.in @@ -5915,10 +5915,16 @@ *-msvc*|*-mks*|*-mingw*) AC_DEFINE(MOZ_MEMORY_WINDOWS) dnl This is sort of awful. Will revisit if we add support for more versions - if test "$CC_VERSION" != "14.00.50727.762" -a "$CC_VERSION" != "15.00.30729.01"; then - AC_MSG_ERROR([Building jemalloc requires exactly Visual C++ 2005 SP1 or 2008 SP1 currently.]) + if test "$CC_VERSION" == "14.00.50727.762" -o "$CC_VERSION" == "15.00.30729.01"; then + WIN32_OLD_STYLE_JEMALLOC=1 + AC_DEFINE(WIN32_OLD_STYLE_JEMALLOC) + elif test "$CC_VERSION" == "16.00.30319.01" -o "$CC_VERSION" == "16.00.40219.01"; then + WIN32_NEW_STYLE_JEMALLOC=1 + AC_DEFINE(WIN32_NEW_STYLE_JEMALLOC) + else + AC_MSG_ERROR([Building jemalloc requires exactly Visual C++ 2005 SP1 or 2008 SP1 or 2010 currently.]) fi - if test -z "$WIN32_CRT_SRC_DIR"; then + if test -z "$WIN32_CRT_SRC_DIR" -a -n "$WIN32_OLD_STYLE_JEMALLOC"; then if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then AC_MSG_ERROR([When building jemalloc, set WIN32_CRT_SRC_DIR to the path to the Visual C++ CRT source (usually VCINSTALLDIR\crt\src, but VCINSTALLDIR is not set, so I can't autodetect it for you).]) else @@ -5939,13 +5945,22 @@ AC_SUBST(MOZ_CRT_CPU_ARCH) - if test ! -d "$WIN32_CRT_SRC_DIR"; then - AC_MSG_ERROR([Invalid Win32 CRT source directory: ${WIN32_CRT_SRC_DIR}]) + if test -n "$WIN32_OLD_STYLE_JEMALLOC"; then + if test ! -d "$WIN32_CRT_SRC_DIR"; then + AC_MSG_ERROR([Invalid Win32 CRT source directory: ${WIN32_CRT_SRC_DIR}]) + fi + WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd -W` + _objdir_win=`pwd -W` + WIN32_CUSTOM_CRT_DIR="$_objdir_win/memory/jemalloc/crtsrc/build/$MOZ_CRT_CPU_ARCH" + MOZ_MEMORY_LDFLAGS="-MANIFEST:NO -LIBPATH:\"$WIN32_CUSTOM_CRT_DIR\" -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt19 -DEFAULTLIB:mozcpp19" + else + MOZ_MEMORY_LDFLAGS='-MANIFEST:NO -LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt' + if test -z "$MOZ_DEBUG"; then + WIN32_CRT_LIBS="msvcrt.lib msvcprt.lib" + else + WIN32_CRT_LIBS="msvcrtd.lib msvcprtd.lib" + fi fi - WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd -W` - _objdir_win=`pwd -W` - WIN32_CUSTOM_CRT_DIR="$_objdir_win/mozilla/memory/jemalloc/crtsrc/build/$MOZ_CRT_CPU_ARCH" - MOZ_MEMORY_LDFLAGS="-MANIFEST:NO -LIBPATH:\"$WIN32_CUSTOM_CRT_DIR\" -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt19 -DEFAULTLIB:mozcpp19" dnl Also pass this to NSPR/NSS DLLFLAGS="$DLLFLAGS $MOZ_MEMORY_LDFLAGS" export DLLFLAGS @@ -5970,6 +5985,8 @@ fi AC_SUBST(MOZ_MEMORY) AC_SUBST(MOZ_MEMORY_LDFLAGS) +AC_SUBST(WIN32_OLD_STYLE_JEMALLOC) +AC_SUBST(WIN32_CRT_LIBS) AC_SUBST(WIN32_CRT_SRC_DIR) dnl Need to set this for make because NSS doesn't have configure AC_SUBST(DLLFLAGS) diff -urN a/mozilla/memory/jemalloc/Makefile.in b/mozilla/memory/jemalloc/Makefile.in --- a/mozilla/memory/jemalloc/Makefile.in 2011-09-16 21:52:49 +0800 +++ b/mozilla/memory/jemalloc/Makefile.in 2011-09-17 13:50:44 +0800 @@ -213,12 +213,13 @@ libs:: $(DIST)/lib/mozcrt.lib -$(DIST)/lib/mozcrt.lib:: mozcrt.lib - $(INSTALL) $(IFLAGS2) mozcrt.lib $(DIST)/lib +$(DIST)/lib/mozcrt.lib:: mozcrt_mod.lib + $(INSTALL) $(IFLAGS2) mozcrt_mod.lib $(DIST)/lib + mv $(DIST)/lib/mozcrt_mod.lib $(DIST)/lib/mozcrt.lib # And finally combine that with the jemalloc import library to get an import # library that has our malloc/free/etc and the CRT's everything else -mozcrt.lib:: $(IMPORT_LIBRARY) msvc_modified.lib +mozcrt_mod.lib:: $(IMPORT_LIBRARY) msvc_modified.lib lib -OUT:$@ $^ # Put the fixed object file back in |
第 4 頁 (共 7 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |