zoukankan      html  css  js  c++  java
  • 探讨【IGE】的源代码【二】。

      首先开始服务端的源代码重新架构。

      为什么选择IGE源代码是有原因的,或者我认为他的源代码结构不是很混乱吧。

      毕竟不是全部照抄,只需要了解它的执行逻辑结构,然后重新按照自己的想法来实现。

      这个很重要,只要看下去就会明白。

      

      服务器有几个需要注意的地方:

      第一、内存碎片,这个需要注意,否则服务器会在长时间运行后,性能会越来越差。

        1、内存碎片的产生多出现在内存的不断分配和释放上面。

        2、对象的创建和析构也会产生内存碎片。

        3、结构化的参数——这个是听说的,具体没有试验。

      第二、内存的使用,这个是这篇文章的重点。

      。。。。。。。。。。。。。。。。。

     

      看了服务端的源代码,我想问的是,这些大量的全局变量是不是一定必要的???

      虽然快,但是我们知道一旦声明,从程序开始到结束,这些全局的变量都是常驻于系统里面,占用很多系统资源。

      

      很多人希望系统资源占用得越少越好,我的见解是,我不担心系统的资源占用多少!!

      为什么?

      因为我希望所有的系统资源都使用在必要和合理的地方。

       很多GM都渴望内存占用和CPU占用得越少越好,并且功能越多越好,这种观点并不理智,但是完全没有必要去解释这些。

      种菜的去和买菜的,讨论菜怎么种才合理,这些是很蛋疼的。而且21世纪的技术去实现未来世纪的技术的确更蛋疼。

      这个只是个比如,不针对啥。不必反应过敏哈,:)

      确实,思考的时候,离开一下电脑是有好处的,这个是我抽烟的接口吧。

      抽烟的时候,我喜欢到处走一下,或者到沙发坐一下,整理一下思路。

      于是我想到了:为什么一定采用这些会破坏程序结构的全局变量呢?应该在很必须的时候才使用,这样才合理吧。

      那么应该怎么做合适呢。

      考虑到性能和使用完后,马上释放等要求,可以做出几种合适的处理。

      如果是使用完之后,可以释放的,那么我们可以采用文本或者ini文件记录下来,然后读取这份文件就行。

      或者采用一个泛型链表等,这些都看合适怎么使用就怎么使用。

      显然这些只开销了一个或者几个全局链表对象,而我们可以在任何时候释放这些对象。

      比如服务器控制器的GShare.pas,里面定义了很多配置信息的全局变量。

      你认为这些全局变量是必须的吗??NO,这些只是默认配置的信息,完全可以采用任何方式来替代。

      而这些大量的全局变量占用的系统资源显然不会少,关键是不是必要。

      可以写入文件里面或者打包入资源包里面。

      因为无关性能的问题,这些东西只对系统初始化有用。

      实际最终控制器是从配置文件里面读取的。

      一旦生成所有的配置文件,这些全局默认变量只剩占用系统资源的份儿。

      也许,需要重新恢复默认参数的时候才有用,很明显,完全可以采取其它的方式来替代,这样更合理。

      怎么做,完全按照个人的理解和习惯来做。

      这样一来,很多地方的优化就理想多了。

      不但服务端这样做,客户端也可以采用这种做法。

      如果嫌链表的方式慢,可以采用数组的方式,听说数组比链表快,泛型链表呢。这些都没有测试过,实际并不重要。

      或者对各种控件进行初始化,当然还是采用文件记录要比较理想,如果担心会被更改,可以采用加密或者修改文件属性的方式来实现。

      如果嫌配置文件太多,可以打包入资源文件里面,采用资源流或者其它方式加载也行。

      

      也许是习惯于结构化文件的操作,我把这些全局变量写成一份结构化文件,原因很简单,方便自己很自由地操作这些文件。

      如果需要加密,我可以把文件随心所欲地进行分割。

      把任何位置的数据搞乱,爱咋弄就咋弄,而且数据紧密,占用空间更小,或者让一部分数据消失,加载的时候再加上,总之,喜欢咋操作都行。

      OK,挺过瘾的,呵呵。

      随着不断的对代码优化,思路也相应清晰起来,我相信制作出一个性能卓越的游戏引擎会很快得以实现。

      OK,继续。。。。。。。 

  • 相关阅读:
    LeetCode OJ 112. Path Sum
    LeetCode OJ 226. Invert Binary Tree
    LeetCode OJ 100. Same Tree
    LeetCode OJ 104. Maximum Depth of Binary Tree
    LeetCode OJ 111. Minimum Depth of Binary Tree
    LeetCode OJ 110. Balanced Binary Tree
    apache-jmeter-3.1的简单压力测试使用方法(下载和安装)
    JMeter入门教程
    CentOS6(CentOS7)设置静态IP 并且 能够上网
    分享好文:分享我在阿里8年,是如何一步一步走向架构师的
  • 原文地址:https://www.cnblogs.com/GameDelphi/p/2633711.html
Copyright © 2011-2022 走看看