coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
45楼#
发布于: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点
  • 社区居民
  • 忠实会员
46楼#
发布于: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点
  • 社区居民
  • 忠实会员
47楼#
发布于: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点
  • 社区居民
  • 忠实会员
48楼#
发布于: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点
  • 社区居民
  • 忠实会员
49楼#
发布于: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点
  • 社区居民
  • 忠实会员
50楼#
发布于:2011-09-26 19:25
强制开启JS引擎的PGO,32位会appcrash,64位版似乎正常    @。@
Lawliet
火狐狸
火狐狸
  • UID34414
  • 注册日期2010-11-03
  • 最后登录2017-04-02
  • 发帖数201
  • 经验13枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
51楼#
发布于:2011-09-26 19:25
Re: VC2010編譯Firefox 7.0 PGO卡在二次編譯
用PyMake,参见 https://developer.mozilla.org/en/pymake

大俠您好

想跟您請教使用pymake編譯後,link的時候貌似會變回單進程
請問有辦法讓link的時候也多線程嗎?
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
52楼#
发布于:2011-09-26 19:25
coolypf你来刷版呢……
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
53楼#
发布于:2011-09-26 19:25
Re: VC2010編譯Firefox 7.0 PGO卡在二次編譯
Lawliet
大俠您好

想跟您請教使用pymake編譯後,link的時候貌似會變回單進程
請問有辦法讓link的時候也多線程嗎?
回到原帖

我觉得链接单线程没什么不好

因为在一个Makefile里只有一个target
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
54楼#
发布于:2011-09-26 19:25
coolypf
手动复制.pgc到.pgd所在目录是最好的办法,
即使最新mozilla-central中修复了pgomerge.py的bug,还是会有组件漏掉,譬如browsercomps.dll。
回到原帖

这个其实无所谓,browsercomps.dll只对RSS之类有影响
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
55楼#
发布于:2011-09-26 19:25
coolypf:另外,大家不必尝试用VS 2011 Developer Preview进行PGO了,
pgort110.dll有bug,无论32位还是64位,都会appcrash。
回到原帖

不想折腾这个 我想转到我的MinGW编译来看看效果
coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
56楼#
发布于:2011-09-26 19:25
Re: VC2010編譯Firefox 7.0 PGO卡在二次編譯
Lawliet
大俠您好

想跟您請教使用pymake編譯後,link的時候貌似會變回單進程
請問有辦法讓link的時候也多線程嗎?
回到原帖

这个没办法,现在似乎还没有可以多线程运行的编译器、链接器。
coolypf
狐狸大王
狐狸大王
  • UID31823
  • 注册日期2010-01-27
  • 最后登录2024-05-18
  • 发帖数361
  • 经验187枚
  • 威望1点
  • 贡献值50点
  • 好评度21点
  • 社区居民
  • 忠实会员
57楼#
发布于:2011-09-26 19:25
dongyuanxun
不想折腾这个 我想转到我的MinGW编译来看看效果
回到原帖

mingw sucks
32位程序必须动态链接mingwm10.dll以支持多线程。
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
58楼#
发布于:2011-09-26 19:25
coolypf
用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
回到原帖

恩,就是有一部分不会重新configure
他的pgo都由PGO变量来控制

习惯哪个就用哪个
dongyuanxun
非常火狐
非常火狐
  • UID28632
  • 注册日期2009-04-19
  • 最后登录2013-02-14
  • 发帖数898
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
59楼#
发布于:2011-09-26 19:25

mingw sucks
32位程序必须动态链接mingwm10.dll以支持多线程。

不需要 Kai的TLS支持早就内建了
游客

返回顶部