[Doing]Java常见问题汇总@stackoverflow
[Q]排序后的数组处理更高效?
[A]分支预测惹的祸。right every time vs. wrong too often -> try to identify pattern(NNNNN...NTTTT...T) and follow it
[Hack]避免关键循环内的data-dependent branching 或
Replace
int t = (data[c] - 128) >> 31;sum += ~t & data[c];
[注]2.79(排序后) vs. 8.10(未排序) vs. 3.54(未排序但Hack后) 差别还是蛮明显的
[Q]两时间相减返回诡异值
[A]Local Time Discontinuity
[注]JDK1.7版本已更正该问题
[Q]避免使用" !=null "
[A]null值可作为约定的1.有效返回值;2.无效返回值。
[Hack]第2种情况可以采用断言(-ea),也可以抛出异常。断言在响应速度和信息意义上优于异常。第1种情况尽量避免用null作为返回值:对集合而言返回空集;对非集合而言尝试Null Object Pattern。