欢迎论文、教育、培训、考试等网站首页链接,QQ:759325。 &0.2.9 充分发挥性能和提高开发效率 ——从实现语言到底层结构
本文所属图书&>&
本书从游戏策划与编程、系统架构、服务器运维、开发团队管理等方面全景展现网络游戏核心技术。作者使用大量图表,生动翔实地描述了网络游戏的特点和架构,并以C S MMO游戏和P2P MO游戏为例,通过实际代码告诉开&&
现在,我们来看一下如何充分发挥性能,提高开发效率。首先从实现语言开始,然后再看看第3 层以下的底层部分的注意点。
如今的网络游戏大多使用C/C++,而现状是大家迫切需要缩短游戏开发周期,由于开发成本很高,各公司都在讨论是否不能使用具有垃圾回收特性的Java 和C#,或者轻量级语言。笔者自己也在想如果能用Ruby 语言来编写具有C++ 执行速度的服务器就好了。
就现状来看,如果牺牲服务器的最高性能,就能提高开发效率。这是种此消彼长的关系。表0.1 以一些主要的编程语言为例进行了简单的总结。
从表0.1 可以看到,C/C++ 与Ruby 在吞吐量性能上相差了1000 倍。服务器数量与处理性能是成反比的,所以1000 倍的差异所带来的服务器数量的差异也是非常惊人的。
表0.1 主要的编程语言与吞吐量
语言 吞吐量 特性
C/C++ 100 静态语言、本地代码
Java/C# 1~10 静态语言、VM、字节码
Ruby/Python 0.1~1 动态语言
现在,拥有大量用户的游戏都是用C/C++ 来编写的,内容相似的游戏纷纷涌入市场,如果不使用C/C++ 的话就无法在价格战中获胜。
网络游戏的特殊性所造成的编程语言性能差异
表0.1 中,Java 的吞吐量比C/C++ 低了10 倍,这是由于网络游戏的特殊性所造成的。一般在配备了JIT(Just In Time)编译器的虚拟机(Virtual Machine,VM)中,Java的运行速度会因JIT 编译的效果变得很快,某些情况甚至会比C 语言更快。
但是这种效果只发生在以CPU 为中心的应用程序中,而在那些与操作系统频繁进行输入输出操作的应用程序中无效。比如,在一个对100MB 的文件进行读取,每次读取1KB 并对行数进行计数的程序中,C 语言要比Java 快上10 倍左右的情况也是常有的。这是因为Java& VM 在系统调用前后,每次都会进行缓存溢出和异常对象的处理。这是无法省去的处理过程,所以使用VM 的处理系统存在一定的局限性。网络游戏的服务器每秒会进行数万次输入输出,这是Java 和C 语言产生速度差异的典型例子。Apache 和MySQL 等服务器软件都用C/C++ 编写也是基于同样的原因。
其次,动态语言的吞吐量比起Java 更是低了10~100 倍,为什么会这样呢?这是因为每次进行一些处理时,对象调用的方法可能会发生变化,所以每次都必须进行检查确认。
顺带提一下,Google 的Go 语言是一种静态的、本地执行的语言,它具有垃圾回收机制,程序员可以在代码的不同部分中选择类型化的强度,既不牺牲服务器的性能又可以提高开发效率,笔者对此十分期待。让人不禁感叹Google 对服务器开发确实颇为了解。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'网络游戏核心技术与实战 高清PDF下载
网络游戏核心技术与实战 txt下载
网络游戏核心技术与实战 电子书下载
网络游戏核心技术与实战 在线阅读
网络游戏核心技术与实战 download
Copyright & 2016 .
All Rights Reserved.
沪ICP备号-1&&&&&&当前位置:>
618超级返狂欢节
一淘网为您找到网游教程产品的详细资讯,实时报价,价格行情,网游教程商品分类,论坛问答/求购等相关产品信息。
增值电信业务经营许可证:浙B2-