erb 效率确实挺高的,慢的是 rails 的 helper
其实很多菜单按了 option 都会出隐藏选项...
补充一点点.. 有的矩阵测试 DRY 了会写成这样:
it "..." do
array.each do |e|
assert...
end
end
把循环放外面就更容易看出是哪一步出的错:
array.each do |e|
it "... #{e}" do
assert...
end
end
如果机器都在你管辖下,可以用 0mq
如果是异系统的机器,就用 rest + json 好了
thrift 如果你不用 cassandra 就不要用了... protobuf 编译都很难...
二进制协议的话可以考虑 bson
那只是 demo... 其实很多运算都是 O(C^n) 的机器再过 100 年都跑不动就这样
minitest 的 setup
和 teardown
两个方法名总是要查一下才确定... 不像 rspec before :each
, before :all
, after :each
, after :all
那么顺手... 而且 minitest 没有全局 setup
和 teardown
rspec 的组织方式是比较好的,def test_xxx
没有标识一个字符串意思清楚。就是顶层不能用 context
比较蛋疼... 我也是觉得 assert 比 should 好些,rspec 设置一下就可以了:
RSpec.configure do |config|
config.expect_with :stdlib
end
it "xxx"
的另一个好处是同名了也没关系 (minitest 会覆盖 -_-), def test_xxx
起个同名测试就覆盖掉了。
还有就是 minitest 的 before
会生成一个 setup
方法,要小心...
$ ri Integer.%
...
See Numeric#divmod.
$ ri Numeric.divmod
...
The quotient is rounded toward -infinity.
商总是向负无穷方向取整,那余数都是按这个规则算出来的
@zlfera 64 位的选 mingw64-64 好了
#23 楼 @ShiningRay 嗯嗯,最近想用 sinatra-synchrony + pg 写点东西,但是就不能用 activerecord 了?
https://gist.github.com/apeckham/3955222
还没尝试和 AR 一起用的 https://github.com/leftbee/em-postgresql-adapter
#84 楼 @JacksonTian 我的机器上
$ node -v
v0.10.6
# list.forEach(function(e){
1.76s user 0.02s system 100% cpu 1.770 total
# for(var j=0; j < list.length; j++)
2.22s user 0.02s system 100% cpu 2.236 total
# var len=list.length; for(var i=0;i<len;i++)
1.77s user 0.02s system 100% cpu 1.777 total
而 ruby slim 还是略快
$ ruby -v
ruby 2.1.0dev (2013-04-25) [x86_64-darwin12.3.0]
1.48s user 0.01s system 99% cpu 1.497 total
之前和 handlebars 比较过也是 slim 快。
另外 slim 不是 ruby 里最快的模板引擎,它的性能比起 erb 还是略慢。
话说我做了 EJS 和 slim 的性能比较,还是 slim 速度快
ruby 版 http://ruby-china.org/topics/7957#reply18
js 版
ejs = require('ejs')
template = "<div>"+
"<h1 class='header'><%= header %></h1>" +
"<h2 class='header2'><%= header2 %></h2>" +
"<h3 class='header3'><%= header3 %></h3>" +
"<h4 class='header4'><%= header4 %></h4>" +
"<h5 class='header5'><%= header5 %></h5>" +
"<h6 class='header6'><%= header6 %></h6>" +
"<ul class='list'>" +
"<% list.forEach(function(e){ %>" +
"<li class='item'><%= e %></li>" +
"<% }) %>" +
"</ul>" +
"</div>"
t = ejs.compile(template)
env = {
header: "Header",
header2: "Header2",
header3: "Header3",
header4: "Header4",
header5: "Header5",
header6: "Header6",
list: ['1000000000', '2', '3', '4', '5', '6', '7', '8', '9', '10']
}
console.log(t(env))
for (var i=0; i < 100000; i++) {
t(env)
}
看来 rails 的瓶颈就是 activerecord =_=
不过感觉就是,这么强调异步的话,框架选 haskell 才对... 数据依赖不用手动管理世界都清净了,还有个小小优点是单进程能解决并行问题。