V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  avatasia  ›  全部回复第 54 页 / 共 78 页
回复总数  1552
1 ... 50  51  52  53  54  55  56  57  58  59 ... 78  
2012 年 3 月 1 日
回复了 people2net 创建的主题 互联网 90后电脑天才季逸超 , 一个人开发猛犸浏览器
这个有什么好怀疑的,这个是软件,不是画画。目前还没有生产力那么高的语言和IDE,所以,基本上我认为这位同学在产品整合力上是蛮强的。
2012 年 3 月 1 日
回复了 people2net 创建的主题 互联网 90后电脑天才季逸超 , 一个人开发猛犸浏览器
看了,相当惊艳,打算买个iphone好去买这个软件。
2012 年 3 月 1 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
去掉splice 53136.

找了网上的一个数组去重算法

http://www.webshowme.com/04js/content.asp?id=2350

结果是 13707.
2012 年 3 月 1 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
在 finalize里 这样去重

var ar = o.words;

var l =ar.length;
while(--l)
{
if(ar.lastIndexOf(1 * ar[l], l-1) > -1){
ar.splice(l, 1);
}
}

第一次测试 56692ms

然后在循环之前 加上 ar.sort(), 设想可以减少 lastIndexOf和splice的时间损耗,结果是 56094ms,基本上没提高。去掉去重,看看。 13180ms。 去掉 array的 push, 9608。

基本上mongodb没藏私。时间应该耗在lastIndexOf上。
2012 年 3 月 1 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
@lainuo 这个自然考虑到了
2012 年 3 月 1 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
发现一个很悲剧的事情, 为了方便使用数据,我把里面的数字类型都转型为NumberLong,然后在做数组去重处理的时候。lastIndexOf不能识别重复的数据,写了个简单的测试 NumberLong(1) == NumberLong(1) , 返回 False。 所以以后如果是数字类型都用默认的类型 double存储,读取的时候再相应转换obj.toInt32() obj.toInt64(). 现在只能用1 * obj,这种方式转成double来处理。
2012 年 3 月 1 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
@aligo 你的写法应该是噩梦级别的,reduce里不能做inArray的操作,,我把distinct判断放到reduce里现在是2分钟07秒。
2012 年 3 月 1 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
@avatasia 你的写法应该是噩梦级别的,reduce里不能做inArray的操作,,我把distinct判断放到reduce里现在是2分钟07秒。
2012 年 3 月 1 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
@aligo emit只有一次的话,value的Numeric值还是原来的格式,如果经过了reduce,就会变成double
2012 年 3 月 1 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
@aligo inArrary不是js默认支持的方法,我用我自己的算法,以前的耗时是57s,现在采用array.push, 54s.没多少提高。 distinct拆开做 是8 +10。
2012 年 3 月 1 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
@aligo 嗯,这个方法不错,我试试跟我现在的性能比较一下。
2012 年 3 月 1 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
e = function(){
return db.STATISDAY.count();
}

l = function(){
db.log.save({t: new Date()});
}
m = function(){
log();
emit({PEPDATE:this.PEPDATE, xx:xx()}, {count: 1});
}

r = function(k, vs){
log();
var r = {count: 0};
vs.forEach(function(v){
r.count += v.count;
})

return {aa: xx(), count: r.count};
}

db.STATISDAY.mapReduce(m, r, {query:{PEPDATE: 20120130}, out:{inline:1}, scope:{xx:e, log: l}});

在map里可以运行外部函数,但是只能读取db,不能写入db。貌似用了db.eval("map()").

2. 以前格式化result的double类型,都是写个finalize,然后调用runcommand,现在可以在reduce里return,省略了finalize一步,这样就可以直接调用db.xx.mapReduce,不用写那么多代码了。
2012 年 3 月 1 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
@aligo map的emit 可以用js来构造key,那么这个步骤可以移出去做个function。 finalize,如果我想在汇总值上再加个对某个字段的distinct值,那么调用个外部function多好。还有有人提议,在mr的out参数加个document,可以直接把result的value输出成文档,不过这个应该还没在roadmap上,我觉的这个功能蛮好。
2012 年 3 月 1 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
@aligo 通过db.system.js.save(); 存入一个全局函数,然后在map,或 finalize里调用这个函数,例如我想在mr之后,在finalize里再去获得其他数据,合并到结果集里。
2012 年 2 月 29 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
@aligo mapreduce里map和finalize都不能调用外部函数,例如db.log.save({a:1}), 但是reduce里是可以调用的。我感觉 mapreduce先调用 query获得一个结果集,在这个结果集用map去匹配数据,获得的数据用reduce去迭代。 可能map和finalize是使用各自的闭包,导致外部的function无法调用。
2012 年 2 月 29 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
自己来回答。

貌似mongodb reduce的条数是1000一组,然后每次把上次的结果算进来正好是1001。
2012 年 2 月 29 日
回复了 avatasia 创建的主题 问与答 有使用mongodb的进来聊聊了。关于mapreduce的问题
又做了一遍测试,发现 trannum是没问题的。 15874,
但是count有问题
在reduce里 改成 log(key, values.length);
结果是
1000
1001
1001
363

实际是3362。

而且奇怪的是,在mapreduce里 数组的长度是length, 而在shell里 用js,则是length(). 很纳闷为什么这样。
2012 年 2 月 29 日
回复了 avatasia 创建的主题 问与答 咨询下链式操作,如果从代码上保证链式操作的顺序
@aligo 到现在我还是没懂jquery的proxy,不过有点那么明白的意思。
2012 年 2 月 29 日
回复了 avatasia 创建的主题 问与答 咨询下链式操作,如果从代码上保证链式操作的顺序
@sohoer java 过滤器的思路应该是这样的, work.add(step1()).add(step2());
while(sork.getNext()) work.do();

但我期望的是,work.step1().step2().
如果理解有误,请指正。
2012 年 2 月 29 日
回复了 avatasia 创建的主题 问与答 咨询下链式操作,如果从代码上保证链式操作的顺序
@wtl 本来不用链式操作,应该是这个思路。
1 ... 50  51  52  53  54  55  56  57  58  59 ... 78  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2740 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 21ms · UTC 15:21 · PVG 23:21 · LAX 08:21 · JFK 11:21
♥ Do have faith in what you're doing.