该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-22
neverforget 写道 请LZ证明“自古才子多风骚”,把开源的代码放出来,让大家见证下你多有才,多风骚!
对啊。。只闻其声,不见其人啊。。 |
|
返回顶楼 | |
发表时间:2010-12-22
吹牛吧,一行代码没看着
|
|
返回顶楼 | |
发表时间:2010-12-22
感觉阿里人才好多。
|
|
返回顶楼 | |
发表时间:2010-12-22
等源代码,准备试试看 ^_^
|
|
返回顶楼 | |
发表时间:2010-12-22
LZ 期待你的source code 啊 赶紧上源码吧
|
|
返回顶楼 | |
发表时间:2010-12-22
LZ,你放图不放种,菊花被熊捅哦
|
|
返回顶楼 | |
发表时间:2010-12-22
最后修改:2010-12-22
谢谢校长进行codereview,指出了其中isDigit函数的问题,尝试多种办法测试之后,发现综合最快的是范围判断。linux kernel的isDigit算法,在Java中性能不稳定,只是在Windows XP 32bit JVM中-client参数时最快,其他测试环境都慢。
最终采用的实现如下,很简单的: public final boolean isDigit(char ch) { return ch >= '0' && ch <= '9'; } linux kernel的isDigit算法如下: private static final boolean[] digitBits = new boolean[256]; static { for (char ch = '0'; ch <= '9'; ++ch) { digitBits[ch] = true; } } public final boolean isDigit(char ch) { return digitBits[ch]; } 这是典型的空间换时间的思路,但在java中,这是性能不稳定的算法,估计是hotspot搞鬼了。 这次调整之后,性能又提升了几个百分点。 |
|
返回顶楼 | |
发表时间:2010-12-22
最后修改:2010-12-22
wenshao 写道 谢谢校长进行codereview,指出了其中isDigit函数的问题,尝试多种办法测试之后,发现综合最快的是范围判断。linux kernel的isDigit算法,在Java中性能不稳定,只是在Windows XP 32bit JVM中-client参数时最快,其他测试环境都慢。
最终采用的实现如下,很简单的: public final boolean isDigit(char ch) { return ch >= '0' && ch <= '9'; } linux kernel的isDigit算法如下: private static final boolean[] digitBits = new boolean[256]; static { for (char ch = '0'; ch <= '9'; ++ch) { digitBits[ch] = true; } } public final boolean isDigit(char ch) { return digitBits[ch]; } 这是典型的空间换时间的思路,但在java中,这是性能不稳定的算法,估计是hotspot搞鬼了。 这次调整之后,性能又提升了几个百分点。 请教一下,为什么不能用Character.isDigit(c),也是因为性能吗? |
|
返回顶楼 | |
发表时间:2010-12-22
sky3380 写道 wenshao 写道 谢谢校长进行codereview,指出了其中isDigit函数的问题,尝试多种办法测试之后,发现综合最快的是范围判断。linux kernel的isDigit算法,在Java中性能不稳定,只是在Windows XP 32bit JVM中-client参数时最快,其他测试环境都慢。
最终采用的实现如下,很简单的: public final boolean isDigit(char ch) { return ch >= '0' && ch <= '9'; } linux kernel的isDigit算法如下: private static final boolean[] digitBits = new boolean[256]; static { for (char ch = '0'; ch <= '9'; ++ch) { digitBits[ch] = true; } } public final boolean isDigit(char ch) { return digitBits[ch]; } 这是典型的空间换时间的思路,但在java中,这是性能不稳定的算法,估计是hotspot搞鬼了。 这次调整之后,性能又提升了几个百分点。 请教一下,为什么不能用Character.isDigit(c),也是因为性能吗? 为啥是256个呢?不就只要判断0-9就行了么? |
|
返回顶楼 | |
发表时间:2010-12-22
sky3380 写道 wenshao 写道 谢谢校长进行codereview,指出了其中isDigit函数的问题,尝试多种办法测试之后,发现综合最快的是范围判断。linux kernel的isDigit算法,在Java中性能不稳定,只是在Windows XP 32bit JVM中-client参数时最快,其他测试环境都慢。
最终采用的实现如下,很简单的: public final boolean isDigit(char ch) { return ch >= '0' && ch <= '9'; } linux kernel的isDigit算法如下: private static final boolean[] digitBits = new boolean[256]; static { for (char ch = '0'; ch <= '9'; ++ch) { digitBits[ch] = true; } } public final boolean isDigit(char ch) { return digitBits[ch]; } 这是典型的空间换时间的思路,但在java中,这是性能不稳定的算法,估计是hotspot搞鬼了。 这次调整之后,性能又提升了几个百分点。 请教一下,为什么不能用Character.isDigit(c),也是因为性能吗? 正确,那个性能很差的! |
|
返回顶楼 | |