TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Watchman: Faster builds with large source trees

51 点作者 patangay将近 12 年前

8 条评论

evmar将近 12 年前
If I'm reading that graph right, the red line is at 10kmsec, i.e. 10 seconds?<p>Incremental build times are near and dear to my heart; I spent a lot of time making the Chrome incremental build fast, resulting in this tool: <a href="http://martine.github.io/ninja/" rel="nofollow">http://martine.github.io/ninja/</a> . In developing Ninja I was surprised to discover that Linux stat() with a warm disk cache is very fast -- well under 100ms to stat the ~40k source files Chrome uses in its build (see the "node stat" lines here: <a href="https://github.com/martine/ninja/wiki/Timing-Numbers" rel="nofollow">https://github.com/martine/ninja/wiki/Timing-Numbers</a> ). At its best point I think we got the one-file-changed build/compile/link cycle of Chrome (a ~70mb C++ binary) to around 5 seconds.<p>Of course, Facebook's problem is surely very different -- their scale could be many more files, and perhaps the programs their engineers run while developing cause their disk caches to flush more frequently. Just found it interesting to worry about the cost of stats.
评论 #5796605 未加载
评论 #5797210 未加载
norswap将近 12 年前
What is the difference with guard (<a href="https://github.com/guard/guard" rel="nofollow">https://github.com/guard/guard</a>), except the "service" aspect?
yid将近 12 年前
Not sure how this is different from inotify+md5+make?
评论 #5795835 未加载
评论 #5795451 未加载
评论 #5795427 未加载
hildegard将近 12 年前
I was just looking into inotify to reload nginx and various other services on conf changes. I guess I'll go with Watchman so I don't have to write a series of shell scripts.<p>I considered guard (<a href="https://github.com/guard/guard" rel="nofollow">https://github.com/guard/guard</a>) and Nodemon (<a href="https://github.com/remy/nodemon" rel="nofollow">https://github.com/remy/nodemon</a>), but Watchman has less dependencies (doesn't require Ruby/Node).<p>There's also Supervisor (Python) (<a href="http://supervisord.org/" rel="nofollow">http://supervisord.org/</a>), but I think that is more process management. I'm not sure if it can do file-watching as simply as Watchman.
评论 #5796902 未加载
rejuvenile将近 12 年前
The tup build system also does this.
thelarry将近 12 年前
Compiling while editing. Intredasting.... I assume there is some crazy dependency algorithm.
评论 #5795507 未加载
b0b0b0b将近 12 年前
This reminds me of Eclipse's support for native hooks to detect file updates (in case something was changed from outside the eclipse session). Watchman would then be like a deconstructed ide.
livingparadox将近 12 年前
I read their problem statement, describing the features they needed. Seemed like Git could solve their problems, with a few well written hooks.
评论 #5796587 未加载