V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  codesun  ›  全部回复第 2 页 / 共 3 页
回复总数  46
1  2  3  
2016-01-07 19:58:07 +08:00
回复了 triffic 创建的主题 Blogger 来晒下你的个人 Blog 好不?
我来凑个热闹 http://lucode.net
2016-01-07 14:53:42 +08:00
回复了 temberature 创建的主题 程序员 为什么计算机语言会有性能的差异?
编译器本质是一种映射程序,编译器从其提供的语法映射到 IR , IR 经过优化可导出汇编或直接经由 codegen 生成本地代码。

先不说别的,虽然二进制只有 0 和 1 ,但是组合爆炸,其次语言的语法不同,生成的下层表示也不同,编译器的处理方式不同,下层的代码也不同,还有最重要的优化器。

一般来说,静态编译语言速度优于解析型,即使后者有 JIT ,也很难超越前者,当然除非前者没有优化器,而且 codegen 很烂,那就另当别论了。

同样是编译型,内部也相差很大,主要取决于语言是不是提供了很多语法糖,是不是由编译器添加了比较多的隐式操作,比如运行时类型检查,运行时数组越界检查,甚至是 GC 等。这些都是开销,比如 C++编译器就会做很多这方面的工作,如 virtual 函数,多态的 vtable ,异常调用等。

对于是否有足够优秀的优化器,这里的内容相当多且复杂,就比如你的编译器支持循环的向量化优化,那么同样的程序,性能就完全不一样了。当然还有很多函数内以函数间的分析与优化,都会对性能产生不同的影响,这方面可以对比 llvm 与 gcc 。

对于编译型语言和解析型语言,差别在于前者生成本地代码,而后者生成解析器可以识别的代码,因此这里涉及从目标代码到本地代码转换的过程,你可以简单地认为解析器就是一个 while+switch 。可能看似性能差别应该不大,但是结果往往是相差一个数量级左右,看你实现地好坏了,或许直接用汇编写个解析器,性能会更好点,应该很少有人会这么做,因为现在大家完全可以用即时编译来弥补一定的性能差距。
android 机跳水太快,你买个 3000 元级别的旗舰机,用 3 年,真还不如每年买个千元机实在
2016-01-05 17:24:37 +08:00
回复了 pierre1994 创建的主题 Python 有哪些不错的开源 OJ 系统
你可以看下我同学写的 OJ ,跨平台,包含前后端
https://github.com/zjhzxhz/voj
2015-12-29 11:43:43 +08:00
回复了 fyyz 创建的主题 C 在看 socket,有点困惑
linux 的头文件里解释得挺清楚的:

旧的声明,为何是 14 ,可以参考‘ talk ’协议
/* This is the 4.3 BSD `struct sockaddr' format, which is used as wire
format in the grotty old 4.3 `talk' protocol. */
struct osockaddr
{
unsigned short int sa_family;
unsigned char sa_data[14];
};

如下是新的声明,总体长度不变
/* Structure describing a generic socket address. */
struct sockaddr
{
__SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
char sa_data[14]; /* Address data. */
};

如下为 ipv4 的 sockaddr ,明确说明需要填充至 sockaddr 的长度
/* Structure describing an Internet socket address. */
struct sockaddr_in
{
__SOCKADDR_COMMON (sin_);
in_port_t sin_port; /* Port number. */
struct in_addr sin_addr; /* Internet address. */

/* Pad to size of `struct sockaddr'. */
unsigned char sin_zero[sizeof (struct sockaddr) -
__SOCKADDR_COMMON_SIZE -
sizeof (in_port_t) -
sizeof (struct in_addr)];
};
至于为何提供 sockaddr 和 sockaddr_in ,按照我个人的理解,是因为历史原因,比如‘ talk ’,其次,现在除了上述 2 个 sockaddr ,还有供 ipv6 使用的 sockaddr_in6 ,那么为了保证 API 的向下兼容, sockaddr 反而成了一种抽象表示,但 C 并不提供类似的语法,因此只能使用相对暴力的强制转型了(前提是保证 struct 内部变量的偏移一致),使用的时候只需要根据 sa_family 即可判断到底是 ipv4 还是 ipv6

另文件描述符即 fd ,就是 socket()的返回值,它是一个索引,即一个整形
2015-12-28 18:19:25 +08:00
回复了 pipicold 创建的主题 程序员 感觉嵌入式没有未来了?
嵌入式不好发 paper 吧。。如果是申 Master 当我没说,如果是申 Phd ,那要谨慎啊
2015-12-15 22:05:25 +08:00
回复了 li24361 创建的主题 程序员 it 男单身狗,怎么学习衣服的搭配
干净点就行了,毕竟程序员和电脑接触的时间更长
2015-12-06 19:31:10 +08:00
回复了 professorz 创建的主题 程序员 学写代码 和 学一门 小语种 哪个更难?
感觉编程简单很多,至少对我来说两者的难度不是一个数量级的
2015-12-01 15:31:39 +08:00
回复了 Orzzzz 创建的主题 问与答 阿里钱盾有用吗?
趁早原理阿里,这货已经不是什么好鸟了
2015-11-30 21:21:26 +08:00
回复了 Andor_Chen 创建的主题 Java 送几本《Java 技术手册(第 6 版)》
看看能不能抽到
2015-11-06 16:48:13 +08:00
回复了 MeOO 创建的主题 程序员 爆栈程序员是一种什么样的存在?
世界上优秀的人这么多,我相信这类程序员是存在的,只不过比较少见罢了。自己要是精力有限就挑一个点做,要是精力旺盛悟性高,能够同时把玩操作系统和编译技术的也大有人在。
2015-10-28 12:41:22 +08:00
回复了 RuiQ 创建的主题 程序员 想哭想放弃
偶尔出现奇葩的问题很正常,但是一直出现,很可能就是楼主的知识体系有欠缺,归根到底还是没有明白原理。

要尝试通过错误信息,配合官方文档,自己寻找问题所在,不要直接把信息贴到 google ,即使是 google 到的答案都不一定正确。对于那些不给出问题的原因,只给解决方法之类的信息,我个人认为没有参考的意义。

每次找到解决方案后,都要想想为什么会出现这种问题,为何要这么做,是什么东西的问题导致了这个问题,有没有更好的方法。

要是这么做依旧没有效果,那我还是建议你从事一些不用配置环境的任务,或者让别人先配好环境。。。
读个研读个博,人生就没遗憾了,但是前提是你要耗得起。现在真正为了学术而继续读书的不多了,学校里真的是各种浮躁。
2015-10-25 14:18:48 +08:00
回复了 oojiayu 创建的主题 程序员 成为程序员,有什么好处?
没有女朋友烦你,说的好像有女朋友似的
@cjjia 倒还真不是全国的,省内,对于不出差的人来说没区别
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5650 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 53ms · UTC 03:31 · PVG 11:31 · LAX 19:31 · JFK 22:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.