liuxb
非常火狐
非常火狐
  • UID26160
  • 注册日期2008-09-05
  • 最后登录2021-12-02
  • 发帖数659
  • 经验324枚
  • 威望0点
  • 贡献值184点
  • 好评度16点
阅读:3202回复:14

ayakawa的7.0RC1的编译版出来了...

楼主#
更多 发布于:2011-09-25 18:11
呃用了两个多小时,确实内存还是比官方版本多.
刚运行的时候不觉得,开的标签多了,时间长了,内存就上去了,
弃用之.
==============
更新下, 应该是我测试有误, 又重新试了一会, 正常...  
改一下标题.
开始不知道什么原因,内存直接上G了,
大概是因为用了supercache对firefox目录有缓存? 我是直接用ayakawa的版本覆盖原版的...
=============
今天新鲜出炉的, 文件版本号比官方的还新一点7.0.0.4285, 官方的是7.0.0.4282
实际使用很糟糕, 主要是内存占用太多了, 和用9.0 nightly版的感觉完全一样.
不知道是怎么弄的?
换回官方的版本,一切正常.
记得3.x,4.0的时候, 这个编译版的表现是非常好的, 现在怎么这样了...

等待tete009和论坛dongyuanxun的.
我的...
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2011-09-25 18:11
Re: 用了一会儿ayakawa新出的7.0RC1的编译版, 很糟糕...
奇怪,我下来看了下,内存占用没觉得反常啊。
估计7.0 release明天就该出现在ftp了吧,也不太确定。
这次我也不确定是否编译x64版。
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
2楼#
发布于:2011-09-25 18:11
Re: 用了一会儿ayakawa新出的7.0RC1的编译版, 很糟糕...
弱弱路过,事实上没用过其他编译版的……
话说,源代码如果一样,编译的结果不是应该差不多么(不考虑不同IDE的区别的话)
-いたんですか? -ええ、ずっと
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2011-09-25 18:11
Re: 用了一会儿ayakawa新出的7.0RC1的编译版, 很糟糕...
白左:弱弱路过,事实上没用过其他编译版的……
话说,源代码如果一样,编译的结果不是应该差不多么(不考虑不同IDE的区别的话)
回到原帖

不一定,内存占用和某些编译开关有重要的关系
adonais
小狐狸
小狐狸
  • UID4338
  • 注册日期2005-03-24
  • 最后登录2020-10-02
  • 发帖数99
  • 经验48枚
  • 威望0点
  • 贡献值4点
  • 好评度0点
  • 社区居民
  • 忠实会员
4楼#
发布于:2011-09-25 18:11
等tete009出来再看看
opzta
火狐狸
火狐狸
  • UID32456
  • 注册日期2010-04-02
  • 最后登录2024-03-16
  • 发帖数107
  • 经验16枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
5楼#
发布于:2011-09-25 18:11
同楼上等tete09
顺便看UA
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
6楼#
发布于:2011-09-25 18:11
Re: 用了一会儿ayakawa新出的7.0RC1的编译版, 很糟糕...
dongyuanxun
不一定,内存占用和某些编译开关有重要的关系
回到原帖



这样啊……那么目前有哪些人在放binary呢?哪些内存占用比较小(或者其他性能比较高?)  (在win7 x86下)
-いたんですか? -ええ、ずっと
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
7楼#
发布于:2011-09-25 18:11
Re: 用了一会儿ayakawa新出的7.0RC1的编译版, 很糟糕...


这样啊……那么目前有哪些人在放binary呢?哪些内存占用比较小(或者其他性能比较高?)  (在win7 x86下)

tete009/ayakawa/pigfoot都有的
我自己也有编译

理论上来说,/O1(等价于/O2 /Os)编译的占用内存(不论exe/dll体积还是内存分配)最小,但性能损失较大(禁用内联了),所以没有人用这个编译。
/Ox编译的据msdn上说是完全优化,速度最快,内存占用也较多,但实际测试使用(没比较Firefox,只是参考了很多项目的编译情况)上/Ox编译的速度比/O2大多数情形要慢,内存占用还多,pigfoot使用该开关编译。此外,pigfoot还额外使用了fastmath开关,这个开关我第一次编译时也有使用,不过tete009给我说这个开关对FF有些副作用,所以我后来的编译去掉了这个。
/O2是最常用的,兼顾了速度和内存,不过实际使用比/Ox要快的,其他人一般用该开关。

所以,使用/O2的编译版能够造成性能差异的只有采用的不同版本VC编译器、私有性能补丁和pgo。
tete009使用VC2005编译,他的补丁有一部分是私有的(和内存管理有关),所以其他人使用tete009的补丁时只能打一部分,内存管理那部分无效。
其他人大部分使用VC2010编译,补丁有很多,但对性能有影响的几乎没有,直接使用tete009补丁的我还没发现。
我编译的打入了tete009的补丁,虽然内存管理那一块儿也可以直接搞出导入库来,不过分发会破坏tete009的版权,所以那一块儿我没用。
在pgo方面,除了tete009和我编译的,其他人的pgo都是采用默认的(猜测,因为他们提供的过程没有谈及这一部分,而且是自动脚本)。
因为要改善pgo,就必须要打断FF的自动编译进程,变成人工采集信息(写自动化脚本也可,不过要改太多的python脚本,我又不熟),费时间,所以tete009只对XUL进行了人工采集,js还是使用默认的。
我编译的采集的信息比较多,具体可以参照我的betterpgo:https://code.google.com/p/pcxfirefox/source/browse/#svn%2Ftrunk%2Fbetterpgo%2Fjs%2FV8
因为比较费时间,所以我编译5的时候只跑了有限的几个项目(第一次引入betterpgo,也不熟),编译6的时候跑的项目比较多,这样比较第三方编译FF时,会发现sunspider性能差异不大(因为这个是FF默认使用的PGO),我的V8和Kraken成绩较高。其他测试我没比较优劣。

X64编译还有其他的一些情形,我可能在这个版本或者下个版本编译x64版进行实验。
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
8楼#
发布于:2011-09-25 18:11
Re: 用了一会儿ayakawa新出的7.0RC1的编译版, 很糟糕...

tete009/ayakawa/pigfoot都有的
我自己也有编译

您好,我編譯Firefox PGO for Linux已多年
性能上可以超越win上的tete009
https://skydrive.live.com/?cid=7658a515 ... 4CBF%21264

但在windows上編譯還是頭一回
下面這個鍵結,是我自己編譯的第一個Firefox
http://www.4shared.com/dir/AY2b4IHS/_on ... =116374194
沒有任何性能上優化,因為不得其門

想跟您請教一下更細節的編譯方法
聽您提到原本的PGO編譯使用舊版本的Sunspider
想請教您,如果我要引入您的PGO方法
具體要如何修改?我資質於鈍,您的這個我看不懂
https://code.google.com/p/pcxfirefox/so ... %2Fjs%2FV8
希望您能指點一二,謝謝!

我的編譯環境是WIN7 x32 VC++ 2010/2008 Express
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
9楼#
发布于:2011-09-25 18:11
Re: 用了一会儿ayakawa新出的7.0RC1的编译版, 很糟糕...
Lawliet
您好,我編譯Firefox PGO for Linux已多年
性能上可以超越win上的tete009
https://skydrive.live.com/?cid=7658a515 ... 4CBF%21264

但在windows上編譯還是頭一回
下面這個鍵結,是我自己編譯的第一個Firefox
http://www.4shared.com/dir/AY2b4IHS/_on ... =116374194
沒有任何性能上優化,因為不得其門

想跟您請教一下更細節的編譯方法
聽您提到原本的PGO編譯使用舊版本的Sunspider
想請教您,如果我要引入您的PGO方法
具體要如何修改?我資質於鈍,您的這個我看不懂
https://code.google.com/p/pcxfirefox/so ... %2Fjs%2FV8
希望您能指點一二,謝謝!

我的編譯環境是WIN7 x32 VC++ 2010/2008 Express
回到原帖

我是在他应用pgo的地方强制暂停了
在mozconfig里pgo的地方替换为
mk_add_options PROFILE_GEN_SCRIPT='cscript E:/Mozilla/PgoMsg.vbs'

pgomsg.vbs内容如下:
Dim r
Do
	r = MsgBox("Please push [Yes] button after collecting the profile data manually.", 4 + 48 + 256, "Mozilla PGO")
Loop While r <> 6

这样FF编译就会停住,你可以执行任何的操作了。比如到bin目录里运行FF(好像还缺少一个pgo的dll,你可以到vc目录里复制过来),跑一些测试,我的那些测试项目可以用svn拖到本地,然后在FF里跑,因为现在是收集信息阶段,所以测试时间非常长,你可以挑拣一些常用的项目来跑。注意不要在测试时死掉,否则信息不能生成。收集完了,点击Y即可,编译合并PGO会开始。
我准备看下python,看看怎样vbs的脚本改成python脚本,这样编译方法就能跨平台了。
不过目前来说,gcc的lto和pgo bug(需要gcc4.6以上)有些多,Linux下最好不要同时采用,虽然有避免的方法,但对FF来说太麻烦了(主要是一旦修改编译参数,FF编译就不认账了……只能改makefile.in.....)。
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
10楼#
发布于:2011-09-25 18:11
Re: 用了一会儿ayakawa新出的7.0RC1的编译版, 很糟糕...
我是在他应用pgo的地方强制暂停了
在mozconfig里pgo的地方替换为
mk_add_options PROFILE_GEN_SCRIPT='cscript E:/Mozilla/PgoMsg.vbs'

pgomsg.vbs内容如下:
Dim r
Do
	r = MsgBox("Please push [Yes] button after collecting the profile data manually.", 4 + 48 + 256, "Mozilla PGO")
Loop While r <> 6

这样FF编译就会停住,你可以执行任何的操作了。比如到bin目录里运行FF(好像还缺少一个pgo的dll,你可以到vc目录里复制过来),跑一些测试,我的那些测试项目可以用svn拖到本地,然后在FF里跑,因为现在是收集信息阶段,所以测试时间非常长,你可以挑拣一些常用的项目来跑。注意不要在测试时死掉,否则信息不能生成。收集完了,点击Y即可,编译合并PGO会开始。
我准备看下python,看看怎样vbs的脚本改成python脚本,这样编译方法就能跨平台了。
不过目前来说,gcc的lto和pgo bug(需要gcc4.6以上)有些多,Linux下最好不要同时采用,虽然有避免的方法,但对FF来说太麻烦了(主要是一旦修改编译参数,FF编译就不认账了……只能改makefile.in.....)。

謝謝,您的方法是在原本進行javascript測試的地方停止
然後自己開啟需要優化網站的地方嗎?

我記得以前有個編譯項,可以做到停止編譯,自己會起始一個空白頁的Firefox供測試
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@

但我不知道這個方法是否在win下同樣起作用

另外想再請教.mozconfig的寫法
這是我在win下編譯的(無任何性能優化)
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-pgo
mk_add_options MOZ_CO_PROJECT=browser
mk_add_options MOZ_MAKE_FLAGS="-j5"
#mk_add_options MOZ_PACKAGE_NSIS=1
#ac_add_options --enable-application=browser
#ac_add_options --enable-update-channel=nightly
#ac_add_options --enable-optimize
#ac_add_options '--enable-optimize=-O2 -GL -arch:SSE2 -GS- -DTT_MEMUTIL -FI tmemutil.h'
ac_add_options '--enable-optimize
#ac_add_options --enable-optimize="-O2"
ac_add_options --disable-debug
ac_add_options --disable-tests
ac_add_options --disable-installer --disable-updater
ac_add_options --disable-accessibility
#ac_add_options --enable-update-packaging
#ac_add_options --disable-vista-sdk-requirements
#ac_add_options --disable-static
##
#
##form tete009
#ac_add_options --disable-auto-deps
#ac_add_options --disable-jemalloc
#ac_add_options --disable-crashreporter
#ac_add_options --disable-activex-scripting
#ac_add_options --disable-activex



而以下是我在Linux用的.mozconfig
#
#make -f client.mk profiledbuild
#make -f client.mk build
#make package
#make distclean
#
#
#patch -Np1 -i firefox-version.patch
#patch -Np1 -i mozilla-pkgconfig.patch
#patch -Np1 -i mozilla-firefox-1.0-lang.patch
#patch -Np2 -i mozilla-libjpeg-turbo.patch
#patch -Np1 -i reload-new-plugins.patch
#patch -Np1 -i firefox-browser-css.patch
#
#
. $topsrcdir/xulrunner/config/mozconfig
. $topsrcdir/browser/config/mozconfig

mk_add_options MOZ_CO_PROJECT=browser
ac_add_options --enable-application=browser
ac_add_options --prefix=/usr --libdir=/usr/lib

## System libs are preferred
ac_add_options --with-system-nspr --with-system-nss --with-system-zlib
ac_add_options --with-system-bz2 --with-system-jpeg --with-system-png
ac_add_options --with-system-libvpx --with-system-libevent
ac_add_options --enable-system-sqlite --enable-system-cairo --enable-system-lcms
ac_add_options --enable-system-hunspell --with-pthreads 
#ac_add_options --disable-libxul
ac_add_options --enable-ipc --disable-static
ac_add_options --disable-installer --disable-updater

## Optimize
ac_add_options --disable-pedantic --enable-jemalloc --enable-xterm-updates
### Reverse these lines (enable vs disable) for a debug build
ac_add_options --disable-debug --disable-tests
ac_add_options --disable-mochitest --enable-profile-guided-optimization
ac_add_options --disable-crashreporter --enable-strip --enable-install-strip
ac_add_options --enable-optimize
#ac_add_options --enable-optimize="-mtune=core2 -pipe -O3 -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -fpermissive"
###
### For a debug build, uncomment these as well
#export CFLAGS="$CFLAGS -gdwarf-2"
#export CXXFLAGS="$CXXFLAGS -gdwarf-2"
#export MOZ_DEBUG_SYMBOLS=1

## Edit these as you see fit
ac_add_options --enable-default-toolkit=cairo-gtk2  # cairo-gtk2-dfb, cairo-gtk2, or cairo-qt
ac_add_options --enable-official-branding --enable-startup-notification
ac_add_options --disable-parental-controls --disable-java-xpcom
ac_add_options --disable-xprint --disable-gconf --disable-gnomevfs
ac_add_options --enable-extensions=default --enable-printing --enable-xinerama
ac_add_options --enable-pango --enable-canvas --enable-canvas3d --enable-svg
ac_add_options --enable-smil --enable-shared-js --enable-url-classifier
ac_add_options --enable-places --enable-gio --enable-libnotify
# This is disabled in order to speed Firefox up, it prevents checking Google
# for every single URL Firefox processes.  If you're using this package, it's
# likely you already know enough to be safe online, or are paranoid
# (perhaps with reason) about Google getting your URLs (checksummed?).
# Also, this is GNU/Linux, we have somewhat less to fear ;-)
ac_add_options --disable-safe-browsing

#mk_add_options MOZ_MAKE_FLAGS=-j5
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-pgo
mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) $(MOZ_OBJDIR)/_profile/pgo/profileserver.py'
mk_add_options PYTHONPATH='$(OBJDIR)/_profile/pgo'
mk_add_options BUILD_OFFICIAL=1
mk_add_options MOZILLA_OFFICIAL=1
export BUILD_OFFICIAL=1
export MOZILLA_OFFICIAL=1

# Want to change the compiler?
#export CC='gcc-4.6'
#export CXX='g++-4.6'


想請教我現在如果只想先編譯性能優化的PGO
使用傳統的PGO方法,您的PGO方法先不用
其它細節跟方法,等傳統PGO我編譯成功了再來研究
是否只需要把我win上的.mozconfig添加下面這幾項就好?
ac_add_options --enable-profile-guided-optimization
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-pgo
mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) $(MOZ_OBJDIR)/_profile/pgo/profileserver.py'
mk_add_options PYTHONPATH='$(OBJDIR)/_profile/pgo'
mk_add_options BUILD_OFFICIAL=1
mk_add_options MOZILLA_OFFICIAL=1
export BUILD_OFFICIAL=1
export MOZILLA_OFFICIAL=1



另外再請教我在win上的optimize參數問題
我最先編譯的沒有添加任何開關,後來參考tete009
我做了這樣的改變,但是這樣子編譯好像編譯不過去,會卡住在一個地方
ac_add_options '--enable-optimize=-O2 -GL -arch:SSE2 -GS- -DTT_MEMUTIL -FI tmemutil.h

請問您知道我的編譯過程出了哪些問題嗎?


謝謝!
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
11楼#
发布于:2011-09-25 18:11
没见过你写的这个暂停的方法

你的.mozconfig一般也就是这个写法,没有什么问题,添加的那些也很传统,一般第三方编译都有。

tete009的那个就是我之前说的不能采用的部分

-DTT_MEMUTIL -FI tmemutil.h

这俩需要hacker他的dll,搞出头文件声明和导入库才可以
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
12楼#
发布于:2011-09-25 18:11
沒事了,原來是link的時候太久
一直以為假死....

不過編譯非PGO就花了我72分鐘了
我在Linux上編譯PGO只要54分鐘而已...
不知我哪裡弄錯了?

我接著要開始編譯PGO了

謝謝指教!
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
13楼#
发布于:2011-09-25 18:11
因為tete009比較經常看見有討論所以有點耳熟,其他的都不怎麼聽過呢
不過內存佔用和性能這蹺蹺板,平衡確實不太容易掌握……
所以我還是用官方版好了,省心……畢竟10%左右或者稍微多一些的優化,對於日常瀏覽應該不會影響太明顯——除非是重度網蟲XD
-いたんですか? -ええ、ずっと
aeneid
火狐狸
火狐狸
  • UID24252
  • 注册日期2008-05-22
  • 最后登录2016-01-16
  • 发帖数260
  • 经验47枚
  • 威望0点
  • 贡献值14点
  • 好评度1点
  • 社区居民
  • 忠实会员
14楼#
发布于:2011-09-25 18:11
内存上,目前没发现ayakawa版本有啥问题,比palemoon的Pale Moon 7 r4 (b6) 在内存表现上要好一些。
游客

返回顶部