由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 写code返回2个数较大的一个
相关主题
master毕业论文比较快速要写多久说下我碰到的中国和白人面试官吧
CV中的publication list写在哪里?我觉得
问一道题目为什么老印能在美国公司如鱼得水?
full or complete binary tree的问题为王银感到不公 (转载)
Verilog问题【字符指针题】求帮助?
再回首,还是对linkedlist找cycle那题很疑惑请教perl的tainted和cgi::param() (转载)
给用C++面试的同胞提个醒问一个java的基本问题
打开老中困境的一个路子: 从我做起 (转载)也发面经
相关话题的讨论汇总
话题: eax话题: edi话题: esi话题: int话题: cycle
进入JobHunting版参与讨论
1 (共1页)
w********s
发帖数: 1570
1
没看过有人写得出来?
w********s
发帖数: 1570
2
rt
h*******e
发帖数: 1377
3
不错,学习了。 不过, 工程里用的多么,这种写法我是头一次见到。
y**********u
发帖数: 6366
4
max(a,b)

【在 w********s 的大作中提到】
: rt
h*******e
发帖数: 1377
5
成都哥你看看他给的open source 视频,据说上面的方法会比较快。因为不用branch.
你怎么觉得的阿。

【在 y**********u 的大作中提到】
: max(a,b)
m********2
发帖数: 89
6
至少在arm上面 (a>b?a:b) 比这个快。

【在 w********s 的大作中提到】
: rt
s***i
发帖数: 503
7
这种题很无聊。
h*******e
发帖数: 1377
8
展开说说呢,大学的时候就记得老师说i+++++++之类的题目很无聊,结果一个当时的本
科cs师兄,还和一个cs研究生因为这个++吵了一架,居然都到要见面约架的地步了~~

【在 s***i 的大作中提到】
: 这种题很无聊。
z****e
发帖数: 54598
9
纯粹无聊,有这功夫不如去弄点程序,现在行情这么好
app成功一个,就发财了,泡沫来的时候抓紧冲浪
等泡沫退了之后再吵不迟



【在 h*******e 的大作中提到】
: 展开说说呢,大学的时候就记得老师说i+++++++之类的题目很无聊,结果一个当时的本
: 科cs师兄,还和一个cs研究生因为这个++吵了一架,居然都到要见面约架的地步了~~

h*******e
发帖数: 1377
10
。。。。app成功很容易么。。我看我们系的中国学生大牛在FLG的业余自己开公司做
app做了2年了 游戏加应用都没做出来什么呢,产品都有但是估计不怎么赚钱,后来全
职加入别人的公司做cofounder了。。新公司不是继续做app的。

【在 z****e 的大作中提到】
: 纯粹无聊,有这功夫不如去弄点程序,现在行情这么好
: app成功一个,就发财了,泡沫来的时候抓紧冲浪
: 等泡沫退了之后再吵不迟
:
:

相关主题
再回首,还是对linkedlist找cycle那题很疑惑说下我碰到的中国和白人面试官吧
给用C++面试的同胞提个醒我觉得
打开老中困境的一个路子: 从我做起 (转载)为什么老印能在美国公司如鱼得水?
进入JobHunting版参与讨论
r*******k
发帖数: 1423
11
这个算是奇技淫巧了
不过代码可读性太差了吧
而且效率不比a>b?a:b;
高啊

【在 w********s 的大作中提到】
: 没看过有人写得出来?
w********s
发帖数: 1570
12
cpu是流水的,如果branch预测失败要排空的话,就是16个cycle

【在 r*******k 的大作中提到】
: 这个算是奇技淫巧了
: 不过代码可读性太差了吧
: 而且效率不比a>b?a:b;
: 高啊

r*******k
发帖数: 1423
13
这个不懂
你的意思是说,还是这个诡异的方法更快?
那应该写成library让大家用,不用每个人写出这种后人看不懂的东东
看了眼java的实现
不过java是跑在jvm上的,没啥可比性
/**
* Returns the greater of two {@code int} values. That is, the
* result is the argument closer to the value of
* {@link Integer#MAX_VALUE}. If the arguments have the same value,
* the result is that same value.
*
* @param a an argument.
* @param b another argument.
* @return the larger of {@code a} and {@code b}.
*/
public static int max(int a, int b) {
return (a >= b) ? a : b;
}

【在 w********s 的大作中提到】
: cpu是流水的,如果branch预测失败要排空的话,就是16个cycle
w********s
发帖数: 1570
14
java一向慢的呀
http://gcc.gnu.org/ml/libstdc++/2003-11/msg00295.html

【在 r*******k 的大作中提到】
: 这个不懂
: 你的意思是说,还是这个诡异的方法更快?
: 那应该写成library让大家用,不用每个人写出这种后人看不懂的东东
: 看了眼java的实现
: 不过java是跑在jvm上的,没啥可比性
: /**
: * Returns the greater of two {@code int} values. That is, the
: * result is the argument closer to the value of
: * {@link Integer#MAX_VALUE}. If the arguments have the same value,
: * the result is that same value.

W*********y
发帖数: 481
15
哈哈真的假的



【在 h*******e 的大作中提到】
: 展开说说呢,大学的时候就记得老师说i+++++++之类的题目很无聊,结果一个当时的本
: 科cs师兄,还和一个cs研究生因为这个++吵了一架,居然都到要见面约架的地步了~~

r*******k
发帖数: 1423
16
神奇啊,受教了
谢谢
楼主share一下你看的啥东西吧
不过这么底层的优化,
工作中碰到的机会太少了

【在 w********s 的大作中提到】
: java一向慢的呀
: http://gcc.gnu.org/ml/libstdc++/2003-11/msg00295.html

S*A
发帖数: 7142
17
这些都是老掉牙的假设了。
现在的 CPU 有很多技巧,这种 ugly hack 已经完全没有现实意义了。
其中一个是,现在 CPU 有 conditional mov instruction。
a > b ? a : b 这种实现完全可以用没有branch 来实现的,
而且常见的 compiler 都支持了。
例如这个程序:
int d(int a, int b)
{
return a >= b? a : b;
}
$ gcc -O2 -c -S /tmp/d.c
$ cat d.s
.LFB0:
.cfi_startproc
cmpl %esi, %edi
movl %esi, %eax
cmovge %edi, %eax
ret
看到没有, gcc 自己就会用 cmov instruction。
所以 branch predict 那个理由在现在的机器就不成立。

【在 w********s 的大作中提到】
: cpu是流水的,如果branch预测失败要排空的话,就是16个cycle
S*A
发帖数: 7142
18
看我上一篇,这个只能算丑化和慢化,
优化是算不上的。

【在 r*******k 的大作中提到】
: 神奇啊,受教了
: 谢谢
: 楼主share一下你看的啥东西吧
: 不过这么底层的优化,
: 工作中碰到的机会太少了

w********s
发帖数: 1570
19
cmov也要6个cycle了呀,看多慢

【在 S*A 的大作中提到】
: 这些都是老掉牙的假设了。
: 现在的 CPU 有很多技巧,这种 ugly hack 已经完全没有现实意义了。
: 其中一个是,现在 CPU 有 conditional mov instruction。
: a > b ? a : b 这种实现完全可以用没有branch 来实现的,
: 而且常见的 compiler 都支持了。
: 例如这个程序:
: int d(int a, int b)
: {
: return a >= b? a : b;
: }

S*A
发帖数: 7142
20
不知道不可怕,误导别人就不好了。
你的 6 cycle CMOV 是什么年代的机器啊?
要不要我来教你如何看 instruction cycle 啊?
http://www.intel.com/content/dam/www/public/us/en/documents/man
翻到 appendix C -27 页。
CMOVcc 是 2 cycle.
CMOVBE/NBE/NA 是 3 cycle。
对比一下两个实现:
return a >= b? a : b;
cmpl %esi, %edi
movl %esi, %eax
cmovge %edi, %eax
return b ^((a^b) & -(a < b));
xorl %eax, %eax
cmpl %esi, %edi
setl %al
xorl %esi, %edi
negl %eax
andl %edi, %eax
xorl %esi, %eax
就算 cmovge 是 3, 不是 1,差别是 2 ,
你的那个实现里面多了止不止 2 个instruction?
你的实现整整多了 4 个 instruction.
把代码写那么难懂,然后还要更慢,图什么啊,就是
为了 show off ??

【在 w********s 的大作中提到】
: cmov也要6个cycle了呀,看多慢
g****y
发帖数: 2810
21
现在的游戏计算工具也不需要自己写了吧

【在 w********s 的大作中提到】
: rt
1 (共1页)
进入JobHunting版参与讨论
相关主题
也发面经Verilog问题
哪位大牛能给贴个tri-nary search tree的delete的code?再回首,还是对linkedlist找cycle那题很疑惑
一个多线程的题目,这个写法可以过关么给用C++面试的同胞提个醒
Leetcode word ladder 求助!打开老中困境的一个路子: 从我做起 (转载)
master毕业论文比较快速要写多久说下我碰到的中国和白人面试官吧
CV中的publication list写在哪里?我觉得
问一道题目为什么老印能在美国公司如鱼得水?
full or complete binary tree的问题为王银感到不公 (转载)
相关话题的讨论汇总
话题: eax话题: edi话题: esi话题: int话题: cycle