
1 cassyfar 2013-03-16 07:47:22 +08:00 40s长吗... 编译的时候正好偷个懒什么的,多好 |
2 vibbow 2013-03-16 07:49:25 +08:00 取决于干嘛了。 我们公司的项目,编译一次要20分钟。 更不用说完整的JUnit Test一次了,从来没白天跑过,都是晚上自动跑的。 反正编译是一个考验整机性能的活,除了显卡。 |
3 ufo22940268 OP @cassyfar 原来我也是这么想的,然而实际上在编译的时候我想想那个想想这个,然后编完之后有时候就会忘了自己刚刚编译的原因是什么。 |
4 ufo22940268 OP @vibbow 兄弟,可不可以跑题问一个关于JUnit的问题. 我现在开发的是一个客户端的app,它就是解析一下服务器的json,然后显示一下就这么简单。 可是问题是我写JUnit Test的时候直接取真实的服务器端的数据进行测试,这样子对吗? 还是说我应该把服务器端返回的json给mock起来? |
5 vibbow 2013-03-16 08:08:59 +08:00 @ufo22940268 这个不是很清楚了。 我们公司的产品架构是JAVA, JSP, XML, XSL。 我们的JUnit测试就是两个方面: 1. JUnit调用selenium,然后在Firefox里自动测试网页流程,只要捕捉到了关键字就算通过。 2. 用XSL渲染XML数据,只要没有出错,就算通过。 取真实的数据没问题,只要你有方法能验证这个数据是正确的就行了。 |
6 vibbow 2013-03-16 08:14:48 +08:00 @ufo22940268 取真实的数据有时更能发现隐藏的错误。比如说特殊字符处理,或者来源数据如果错误怎么办之类的问题。 不过记得保存测试日志。 我们测试时所有的数据全部都保存(tomcat日志,远程服务器返回的日志,xsl渲染出来的数据,以及出错时屏幕截图等等),这样出错时才好找问题出在哪里。 |
7 ufo22940268 OP @vibbow 我本来也是这么想的。不过开发了一段时间后发现服务器端的数据有的时候居然会变化(有的时候是因为服务器自己的问题引起),所以我的测试用例有的时候就变成帮服务器测bug的工具了。总之有的时候因为服务器数据变化导致我改测试用例这件事情让我感觉有点不爽。 |
8 zhujinliang 2013-03-16 08:24:28 +08:00 10到20分钟吧,既有成就感,还又不太浪费时间,正好喝杯茶,上个厕所神马的 |
9 SkyFvcker 2013-03-16 08:29:41 +08:00 Gentoo用户表示对编译时间很有耐受力~~~~ |
10 vibbow 2013-03-16 08:57:20 +08:00 @ufo22940268 我们公司产品的中间件有些奇葩,有这么一个选项: 如果没有在一段时间内从远程获取到数据,那么就自己伪造一个输出给前端。 当然也是产品功能之一,有时候客户不需要用在线数据,就可以用离线数据。 |
11 Mutoo 2013-03-16 09:32:05 +08:00 带薪编译。 |
12 sumu 2013-03-16 09:41:11 +08:00 当你加入一个团队之后发现团队要求每次做新功能要单独拉分支,而新分支编译要2个小时以上。。。。。,当开发完之后合并到主干,再次拉一个分支,同样是2个小时,so,少年,几十秒的编译时间,浮云啊,如果工程简单,来个make -j能少等一会儿 |
13 clowwindy 2013-03-16 09:49:59 +08:00 想清楚了,写好了,检查一下,再运行。 |
14 xdeng 2013-03-16 09:54:58 +08:00 linux内核更久 |
15 ufo22940268 OP @clowwindy 这个答案很靠谱,而且我也努力向这个方向努力。 |
16 jerommix 2013-03-16 10:03:15 +08:00 试过Android系统编译么? 1.单机篇 -cache -j{n} 2.多机编译 |
17 alexrezit 2013-03-16 10:07:53 +08:00 不然你以为 unit test 是干嘛的咧~ |
18 ufo22940268 OP @jerommix 以前android-porting的时候用过ccache和-j,但是现在用ant编译了,待会儿去看看ant可不可以多线程编译。 |
19 fangzhzh 2013-03-16 10:55:58 +08:00 没人吐槽不给配电脑的事实吗? 要是lz没有电脑可带, 那么lz试用期练 坐禅神功吗? |
20 ufo22940268 OP @fangzhzh 创业公司,没办法。如果没电脑的话会给一台过时的小黑,我还宁愿要小黑呢,可以装个自己喜欢的linux发行版。 |
22 kofj 2013-03-16 13:23:55 +08:00 自己坚持编译完一次LFS你就会发现之前的编译时间都是小case~哈哈哈哈 |
24 shaobin0604 2013-03-16 13:34:29 +08:00 @sumu 莫非是企鹅 |
25 66450146 2013-03-16 14:36:00 +08:00 我们的 iOS app 编译一次要十几分钟 |
26 zx900930 2013-03-16 14:43:05 +08:00 我能忍受的极限是48小时 |
27 ufo22940268 OP @66450146 游戏开发吗? |
28 66450146 2013-03-16 15:41:24 +08:00 @ufo22940268 不是的 |
29 molinxx 2013-03-16 15:45:30 +08:00 make -j*不超过20分钟就能忍受~ |
30 pyKun 2013-03-16 17:09:38 +08:00 @fangzhzh 还想吐槽一下,我们公司组织踢球嘛,租个场地2个小时那样的;主要是陪老板踢,然后租场地这钱是大伙AA的~每次都交几十点几几这样的~~ 不知道还有人和我一样么 |
31 JimmyZ 2013-03-16 17:13:27 +08:00 |
32 fangzhzh 2013-03-16 18:15:33 +08:00 @pyKun 这种状况必然不去. 你是去工作的,又不是去装孙子的. 话说, 我们公司年会我一次都没有去过.... 周年庆,各种奖品,各种抽奖, 必然请假, 不耽搁工作内容,也可以趁机在家休息下 道不同,不相为谋. 好公司就当自己家, 活动即使无趣,也要捧场; 好的工作伙伴就当哥们, 过年回家都想着发祝福短信. 烂公司那就是打工的地方, 我出工,你给钱; 不要祈求更多. 公司对员工时就是资本家和工人关系; 轮到了员工对公司就成了无私奉献了,那不是人格分裂吗? |
33 fangzhzh 2013-03-16 18:18:00 +08:00 "@clowwindy 想清楚了,写好了,检查一下,再运行。" 这是大牛,真的. 这个建议只有懂得,才知道有多中肯,重要 |
35 wenbinwu 2013-03-16 18:41:30 +08:00 几十秒很好了吧 |
36 Leo 2013-03-16 18:43:02 +08:00 一直很羡慕你们能有40s伸个懒腰 |
37 huangzxx 2013-03-16 18:59:02 +08:00 ccache 和 distcc。不知道对 lz 有没有帮助。 |
38 chuangbo 2013-03-16 21:40:41 +08:00 装 Gentoo 要一个星期啊! |
39 min 2013-03-16 22:49:23 +08:00 在sh3 cpu上装过gentoo的飘过 |
40 bytelee 2013-03-16 23:26:04 +08:00 上大学的时候,实验室里,用虚拟机编译linux内核。等过2个小时 |
41 saharabear 2013-03-16 23:34:31 +08:00 我在FreeBSD上编译KDE4.7,用的是一台不能再老的机器,我编译了两天半,报了个错。 |
42 xuan_lengyue 2013-03-16 23:35:48 +08:00 我自己写的iOS App,光是编译就得5分钟。。。 每次客户要改需求,最后打成ipa给他,简直就是杯具。 |
43 Mooooon 2013-03-16 23:50:42 +08:00 via Android 锅做android驱动,改一次就要编次内核,编次内核视平台不同大5-15分钟吧。android全编1个半小时到两小时。 |
44 ufo22940268 OP @saharabear 这个真搞 |
45 rebolomo 2013-03-17 10:06:00 +08:00 以前也是做porting项目,编译个游戏要花差不多1个小时,后来带我们的大哥级程序员发现个技巧,用一个.h文件把好多个cpp文件include进来,可以加快编译,十几分钟就编译好了。 |
47 rebolomo 2013-03-17 11:05:34 +08:00 @luikore 不一样,那个是把所有的header包进来,把cpp放到一个header里面include,好像是所有的cpp的内容会变成一个大的cpp,比每次编译一个cpp要快,所以工程里那些单独的cpp也不放进去,只放一个.h,里面是一行一行的cpp文件名 |
48 shikailun 2013-03-17 13:54:51 +08:00 曾经二次开发chrome,,第一次编译了8个小时。。。后来每次也需要2小时。。 |
49 oldcai PRO 看了上面,发现QT静态编译,3个多小时,都不算个事了。 |
50 cppgohan 2016-07-06 14:16:44 +08:00 想知道 lz 以前做 Android Framework 开发, 每次改动 40s 后提交服务器, 服务器编译过程用的是什么 CI 系统? 反馈要多久啊? 以前做 win 下的应用开发, vs 的工程, 大的项目可以用分布式编译的解决方案, Android 构建的这套流程似乎没见到类似的. |
51 ufo22940268 OP @cppgohan 我就不说以前是怎么做的了,因为之前用的是 crontab ,反正也不是我搭的,没什么好丢人。 针对的你的问题,我觉得 jenkins 就足够能够满足`分布式编译`的要求。因为 jenkins 里面可以添加多个 node ,并行执行任务。想 twrp 之类的项目就是用 jenkins 完成分布式编译的。链接: https://jenkins.twrp.me/ |