设为首页 加入收藏

TOP

13.3 降低灵活性
2013-10-07 14:06:46 来源: 作者: 【 】 浏览:50
Tags:13.3 降低 灵活性

13.3  降低灵活性

作为某一领域的专家,经常需要做一些简化问题的假设以提高性能。

通常情况下,当客户端发起请求时Web服务器需要知道其IP地址。IP地址用点分十进制数来表示,比如,9.37.37.205。起初,对于每一次请求,程序都分配足够多的堆存储空间用以容纳客户端的IP地址。请求处理结束时再释放该空间。调用函数new()和函数delete()来处理堆存储空间的代价很高,尤其是每次请求均需调用这两个函数的情况将更加糟糕。尽管使用内存池可以减轻负担,但还是无法完全消除对new()和delete()的调用。

如果IP地址的长度没有限制,那么除了动态分配空闲内存空间外别无选择。但是,作为TCP/IP方面的专家,必然知道当前IP地址的长度不会超过15字节。最长的地址形式为:

  1. xxx.xxx.xxx.xxx 

如果再增加一个终结符NULL,则长度变为16字节。下一代IP地址(IPv6)的长度虽然有所增加,但总归是有限的。既然IP地址的长度是有限的,那么以局部变量的形式将IP地址存储在堆栈上会更加有效。

  1. char clientIPAddr[256]; 

在未来很多年内这种做法已经足够好了。尽管32字节已经足够,但出于安全方面的考虑我们还是选择了256字节。这个有限的字符数组消除了代价高昂的new()和delete()调用。为了获得性能的提升而牺牲了永远不会需要的灵活性。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇提高C++性能的编程技术 前言 下一篇13.2 预先计算

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: