V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ysmood  ›  全部回复第 14 页 / 共 15 页
回复总数  300
1 ... 6  7  8  9  10  11  12  13  14  15  
2015 年 5 月 17 日
回复了 ysmood 创建的主题 分享创造 由于 Bluebird 体积太大,重造了一个 Promise 库
@laoyur 而且类似这种单测也和原生 Promise 都不一致:

new Promise(function () { throw 10 }).catch(function() {})

其实不是把 promises-aplus-tests 都跑过就万事大吉了,还是有很多浏览器的规范在里面的。
2015 年 5 月 17 日
回复了 ysmood 创建的主题 分享创造 由于 Bluebird 体积太大,重造了一个 Promise 库
@laoyur 你这个在 node 下已经慢到跟 q(2755ms) 差不多了,Bluebird 最快 301ms,上面的测试越小越快。
2015 年 5 月 17 日
回复了 ysmood 创建的主题 分享创造 由于 Bluebird 体积太大,重造了一个 Promise 库
@laoyur 除了 shim 外的功能应该基于一个基础库开发。比如我会把 yaku 写到完善,然后基于它写个 yaku-ex 之类的,人们可以选择最适合需求的,而不是一股脑都放一起。

关于类似 finally 这种我很早就在 stackoverflow 上讨论过了,ES6 大概不会支持的见: http://stackoverflow.com/questions/26667598/will-javascript-es6-promise-support-done-api

你可以很容易在类似 yaku-ex 这样的库里实现一个。
2015 年 5 月 17 日
回复了 ysmood 创建的主题 分享创造 由于 Bluebird 体积太大,重造了一个 Promise 库
@laoyur 所以这里为了问题的简化,只讨论 ES6,unhandled reject 这个我口误,是要符合现行 chrome 或者 firefox的处理方式,他们会在 gc 里处理它,我这边尽量模拟了这个过程,这很关键。

关于性能,我帮你跑了下,在 node 下差距很大:

Node v1.8.1
OS darwin
Arch x64
CPU Intel(R) Core(TM) i7-4850HQ CPU @ 2.30GHz
--------------------------------------------------------------------------------
yaku
total: 324ms
init: 215ms
resolution: 109ms
memory: rss - 115mb | heapTotal - 96mb | heapUsed - 76mb

pp
total: 2378ms
init: 1940ms
resolution: 438ms
memory: rss - 300mb | heapTotal - 278mb | heapUsed - 252mb

浏览器里没必要测性能,只有服务端 server 用 yaku 的时候这才是瓶颈,用户的 browser 里不可能跑重运算的。
2015 年 5 月 17 日
回复了 ysmood 创建的主题 分享创造 由于 Bluebird 体积太大,重造了一个 Promise 库
@otakustay 另外你理解的 unhandled reject 似乎不对。比如我用你的库运行

Promise.reject(10).catch(function() {})

结果还是会打印 10,这不符合 ES6 spec 的规范。
2015 年 5 月 17 日
回复了 ysmood 创建的主题 分享创造 由于 Bluebird 体积太大,重造了一个 Promise 库
@otakustay 我这边除了 unhandled rejection,还有 long stack trace,这个也非常重要。另外你可以测下你的性能和我的差别。

我的这个库的目的就是不添加除了调试用的任何非原生接口,换句话说用我这个库,可以没有任何副作用的删除它,切换到使用原生的 Promise。

关于 cancel/abort 这个不是 Promise 应该解决的问题,ES6 的 community 已经应该讨论过这个问题了。
2015 年 5 月 17 日
回复了 ysmood 创建的主题 分享创造 由于 Bluebird 体积太大,重造了一个 Promise 库
@laoyur readme 里已经有个和各个库的性能比较了,看那个表格,其中有 Bluebird,你甚至能自己跑下 benchmark,具体怎么运行 readme 里也有。不过更复杂情况的性能测试不是当前的开发重点,性能会之后慢慢优化。
2015 年 5 月 17 日
回复了 ysmood 创建的主题 分享创造 由于 Bluebird 体积太大,重造了一个 Promise 库
@magicdawn 我这个跟书上的不一样,一般书上的实现是跑不过那 800 多个单测的,我这个 80 行的是可以的,我这个可能更偏向工程实际些。对于想更深入了解的人可能有帮助。
2015 年 4 月 12 日
回复了 abccba 创建的主题 Linux 坚持使用 Linux 办公的朋友们可否分享一些经验?
@abccba 联系我吧,反正是马甲,无所谓 waistcoat01#gmail.com
2015 年 4 月 9 日
回复了 ysmood 创建的主题 程序员 没有人觉得 golang 官方的项目文件命名规范很奇怪吗?
@ewex 比如 whydoyouthinkitiselegant?
2015 年 4 月 8 日
回复了 ysmood 创建的主题 程序员 没有人觉得 golang 官方的项目文件命名规范很奇怪吗?
stringutil 这个不就两个单词么?should be single-word 这不自相矛盾吗?
2015 年 4 月 8 日
回复了 ysmood 创建的主题 程序员 没有人觉得 golang 官方的项目文件命名规范很奇怪吗?
@aaaa007cn `stringutil` 我笔误。别纠结后缀。关键是文件命名方式。
2015 年 3 月 20 日
回复了 pingplusplus 创建的主题 推广 iPhone 只有一个按钮的灵感来自马桶,你知道吗?
那为啥,不把锁屏键,静音键和音量键也去掉?太不极致了。
@binux 所以我说参考价值相对高低。我只能说这种反例相对比较少,肯定不能完美判定好坏的。引用数这个概念应该是公认比较靠谱的吧?star 数这种社交型的会更容易被非技术因素影响吧?我指的自动判定,自己人工判定肯定会更准。

话说 python 没什么好的实时引用计数统计服务吗?
github 参考意义确实不会太大,但是如果有人说他开发的某个项目我正在使用,那就比较有说服力了。至少我用过,知道这东西的好坏。

像 npm 里项目被引用次数比 github 要更具参考价值(类似论文引用次数)。比如你跟别人说你的项目被1000个项目引用了,这就比较能体现某个作品的价值了。当然很多产品级别的东西作为末端很难被作为库引用就是了。

@binux 话说 pip 有引用次数计数吗?类似 https://www.npmjs.org
2015 年 3 月 4 日
回复了 nary 创建的主题 问与答 如何通过掷六面骰子,产生 1-7 的随机数?
其实我好奇的是能否在既定的次数内完成这个需求,按现在的解法,运气不好可能要重投无数次。
2015 年 3 月 4 日
回复了 nary 创建的主题 问与答 如何通过掷六面骰子,产生 1-7 的随机数?
@Daniel65536 嗯,确实,没仔细想,感觉高中天天犯这种错误。
2015 年 3 月 3 日
回复了 nary 创建的主题 问与答 如何通过掷六面骰子,产生 1-7 的随机数?
我给个可能不是最优,但易于理解的解吧:

1、记 N 初始值为 0
2、扔骰子,如果是奇数 N++
3、重复步骤 2,7 次

总共操作 7 次,得到的 N 值就是 [1, 7] 均匀分布的。
2015 年 3 月 3 日
回复了 nary 创建的主题 问与答 如何通过掷六面骰子,产生 1-7 的随机数?
这题改下,求最少需要扔多少次,能达到均匀随机。
2015 年 2 月 28 日
回复了 tioover 创建的主题 程序员 两篇 Rust 安利文
感觉现在很多人倾向于使用 nim,和 nim 比比呢?
1 ... 6  7  8  9  10  11  12  13  14  15  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   958 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 21:48 · PVG 05:48 · LAX 13:48 · JFK 16:48
♥ Do have faith in what you're doing.