coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
15楼#
发布于:2011-09-26 19:25
另外,大家不必尝试用VS 2011 Developer Preview进行PGO了,
pgort110.dll有bug,无论32位还是64位,都会appcrash。
coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
16楼#
发布于:2011-09-26 19:25
dongyuanxun:编译Firefox使用32位系统都是一种痛苦啊,win32只是2G+2G的空间,应用程序只能到最大2G(win7应该是3G+1G,你的4G有些小,我原来在win7 64bit+6G时成功过),链接FF时需要3G多内存(包含链接器和临时内存),反正我用32位windows从来就没编译成功过PGO优化的Firefox(VC2008以后,据说2005可以,不用PGO和GL可以编译成功)
现在我是使用win7 64bit + 8G内存编译的……
回到原帖

VC2010用不了这么多内存,win7 x64 & 4G内存足够。
链接的时候还能开程序干些别的事。
别用vc2005/vc2008,链接器的内存优化没有vc2010好。
coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
17楼#
发布于:2011-09-26 19:25
dongyuanxun:我看了下FF7已经集成了2010 jemalloc的更改,这个不用打
tete009把一些操作使用intrin函数替代了,这部分可以提高某些性能
最好的例子是
http://ie.microsoft.com/testdrive/Perfo ... ingImages/
选择Large IE Logo
tete的帧数最高

不过中间可能遇到一些编译上的问题,这是因为tete用的是2005,你如果用2008或者2010,代码方面有些不兼容,那么要在他的intrin函数前包含intrin.h,把他自带的声明去掉,否则无法编译通过。

另外,我刚刚编译过程里发现,FF7的build过程似乎发生了更改,他在rebuild时会删除pgd文件,而这种情况在FF6时不会发生,所以使用tete009补丁编译失败时,更改后要保存所有目录的pgd文件到一个其他目录里,在pgo合并之前把pgd复制到相关文件夹,否则pgo信息会读取pgd失败……
如果你能一次编译通过,那么pgd就不会被删除
回到原帖

这种事我也遇到过,改Makefile吧!
coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
18楼#
发布于:2011-09-26 19:25
dongyuanxun:应该是/dist/bin
奇怪,你看看历史记录,pgo信息是否进行合并了

有时pgomerge会有这样的bug,你可能需要把采集到的pgo信息复制到各个文件的编译obj目录里去

我过一会儿开始编译FF7,暂时先用的tete009的
回到原帖

手动复制.pgc到.pgd所在目录是最好的办法,
即使最新mozilla-central中修复了pgomerge.py的bug,还是会有组件漏掉,譬如browsercomps.dll。
coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
19楼#
发布于:2011-09-26 19:25
dongyuanxun:其实改interval的那个是我在FF5编译时采用的方法,这个好处是能够自动化编译,缺点就是测试不均衡,有的跑完还有一大堆时间,有的时间到了还没跑完,而且不要修改source code的,要改obj文件夹的pgo部分,因为他原来有个复制操作,我不知道在哪个makefile.in里体现的,没去认真找。所以我编译6的时候就使用vbs强制中断,然后自行运行测试了。
体积变大的话增加链接消去开关试试,即加入
export MOZ_OPTIMIZE_LDFLAGS="-opt:ref,icf"
mk_add_options MOZ_OPTIMIZE_LDFLAGS="-opt:ref,icf"

一般不会变得太大
回到原帖

用mozconfig + client.mk不方便,PGO可以拆成下面3条命令(client.mk中的profiledbuild规则)
make MOZ_PGO_INSTRUMENTED=1 MOZ_PROFILE_GENERATE=1
MOZ_PGO_INSTRUMENTED=1 dist/bin/firefox.exe -profile 'D:\Temp\fxprofile'
make MOZ_PROFILE_USE=1
coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
20楼#
发布于:2011-09-26 19:25
Lawliet:-GL我在別的帖子已經搜到了

我想再問64bit上邊一32bit binary
需要在mozconfig添加下列項目嗎?
ac_add_options --target=i686-pc-mingw32
ac_add_options --host=
回到原帖

不需要(反而是编译64位版需要指定,因为MozillaBuild本质上就是个MSYS环境)。
建议手动configure,而不是用mozconfig + client.mk。
client.mk其实是个很简单的makefile,看看build:和profiledbuild这两条规则你就明白了。
coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
21楼#
发布于:2011-09-26 19:25
Re: VC2010編譯Firefox 7.0 PGO卡在二次編譯
Lawliet:改成-j1後還真的編譯成功了
只是同硬件下,linux用gcc 4.6.1 -O3 -j5
編譯PGO只要54分鐘
VS2010 -O2 -j1要148分鐘....

性能上比不上tete009跟PcX
接下來就要跟dongyuanxun您多多請教了
還請您包涵

謝謝!
回到原帖

用PyMake,参见 https://developer.mozilla.org/en/pymake
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
22楼#
发布于:2011-09-26 19:25
-GL我在別的帖子已經搜到了

我想再問64bit上邊一32bit binary
需要在mozconfig添加下列項目嗎?
ac_add_options --target=i686-pc-mingw32
ac_add_options --host=
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
23楼#
发布于:2011-09-26 19:25
如果4Gb還夠用,那我呆會就把目前的OS改成64bit了
就怕內存不夠,改成64bit一樣悲劇...
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
24楼#
发布于:2011-09-26 19:25
编译Firefox使用32位系统都是一种痛苦啊,win32只是2G+2G的空间,应用程序只能到最大2G(win7应该是3G+1G,你的4G有些小,我原来在win7 64bit+6G时成功过),链接FF时需要3G多内存(包含链接器和临时内存),反正我用32位windows从来就没编译成功过PGO优化的Firefox(VC2008以后,据说2005可以,不用PGO和GL可以编译成功)
现在我是使用win7 64bit + 8G内存编译的……
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
25楼#
发布于:2011-09-26 19:25
究竟編譯需要多少內存啊?
我的win7 x32 4Gb
兩次了,都是在同一個地方提示空間不夠...

图片:1234.jpg

dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
26楼#
发布于:2011-09-26 19:25
……是放在一起啊
我在前面就是一直说的这个……
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
27楼#
发布于:2011-09-26 19:25
我懂了...
原來pgc要複製到跟同名的pgd目錄一起
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
28楼#
发布于:2011-09-26 19:25
再問個問題
請問您自己在編譯的時候pgc, pgd文件都產生在同個目錄嗎?
因為我的pgc, pgd都分散在各個文件夾,也就是在obj目錄內
我追蹤了obj內關於pgc, pgd文件,散落在個個文件夾中
請問這樣是否就不必再複製了?
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
29楼#
发布于:2011-09-26 19:25
貌似我的編譯環境有問題
我的mozconfig沒有什麼太大的改變
這次一次編譯完後,手動進行pgo採集
已經可以在obj目錄下發現pgc, pgd文件....
文件好多,看得我眼花撩亂

jemalloc的patch謝謝您
我等這次編譯結束再打上這個patch

我先採集pgo信息
謝謝您的幫助!
游客

返回顶部