服务端I/O性能大比拼:Node、PHP、Java和Go

原文请见:Server-side I/O Performance: Node vs. PHP vs. Java vs. Go

理解应用程序的输入/输出(I/O)模型,意味着其在计划处理负载与残酷的实际使用场景之间的差异。若应用程序比较小,也没有服务于很高的负载,也许它影响甚微。但随着应用程序的负载逐渐上涨,采用错误的I/O模型有可能会让你到处踩坑,伤痕累累。

正如大部分存在多种解决途径的场景一样,重点不在于哪一种途径更好,而是在于理解如何进行权衡。让我们来参观下I/O的景观,看下可以从中窃取点什么。

在这篇文章,我们将会结合Apache分别比较Node,Java,Go,和PHP,讨论这些不同的语言如何对他们的I/O进行建模,各个模型的优点和缺点,并得出一些初步基准的结论。如果关心你下一个Web应用的I/O性能,那你就找对文章了。

I/O基础知识:快速回顾

为了理解与I/O密切相关的因素,必须先来回顾在操作系统底层的概念。虽然不会直接处理这些概念的大部分,但通过应用程序的运行时环境你一直在间接地处理他们。而关键在于细节。

系统调用

首先,我们有系统


继续阅读»»»

从正确的方式开始测试你的Go应用

/**
 * 谨献给Yoyo
 *
 * 原文出处:https://www.toptal.com/go/your-introductory-course-to-testing-with-go
 * @author dogstar.huang <chanzonghuang@gmail.com> 2016-08-11
 */

本翻译已被图灵社区转载至《码农·Just Go!(第27期)》

在学习任何新的东西时,具备清醒的头脑是很重要的。

如果你对Go相当陌生,并来自诸如JavaScript或Ruby这样的语言,你很可能习惯于使用现成的框架来帮助你模拟、断言以及做一些其他测试巫术。

现在,消除基于于外部依赖或框架的想法!几年前在学习这门出众的编程语言时,测试是我遇到的第一个障碍,那时只有相当少的一些资源可用。

现在我知道了,在GO中测试成功,意味着对依赖轻装上阵(如同和GO所有事情那样),最少依赖于外部类库,以及编写更好、可重用的代码。此Blake Mizerany的经验介绍敢于向第三方测试库尝试,是一个调整你思想很好的开始。你将看到一些关于使用外部类


继续阅读»»»