免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ming_study
打印 上一主题 下一主题

请教高手:如果扩大程序使用的栈空间? [复制链接]

论坛徽章:
0
31 [报告]
发表于 2004-11-26 12:19 |只看该作者

请教高手:如果扩大程序使用的栈空间?

我个人觉得,写程序的遵循几个原则:
1,程序能够实现预期的功能,程序运行稳定。
2,程序扩展性(易读,易修改)。
3,程序效率(现在的硬件,已经不是以前那样的了)。

请补充指正!

论坛徽章:
0
32 [报告]
发表于 2004-11-26 12:47 |只看该作者

请教高手:如果扩大程序使用的栈空间?

没想到一个问题居然能够说到这么多方面,这些都是做程序和行业的通病,不是一个人两个人的问题。

论坛徽章:
0
33 [报告]
发表于 2004-11-26 13:07 |只看该作者

请教高手:如果扩大程序使用的栈空间?

原帖由 "ming_study" 发表:
我个人觉得,写程序的遵循几个原则:
1,程序能够实现预期的功能,程序运行稳定。
2,程序扩展性(易读,易修改)。
3,程序效率(现在的硬件,已经不是以前那样的了)。

请补充指正!

如果是单任务系统,那就差不多了。但是多任务系统呢?必须考虑到程序对系统和其它任务的影响达到最小。
现在内存是大了,CPU是快了,但是CPU要分时给大家用,内存也要分配给别的任务,写程序不能只考虑自己,就像做人。

论坛徽章:
0
34 [报告]
发表于 2004-11-26 14:47 |只看该作者

请教高手:如果扩大程序使用的栈空间?

还有,这个论坛管的太严了,这样的帖子还是越多越好,FH怎么不做斑竹啊。

论坛徽章:
0
35 [报告]
发表于 2004-11-26 15:04 |只看该作者

请教高手:如果扩大程序使用的栈空间?

写程序要根据实际的需要来定的。

论坛徽章:
0
36 [报告]
发表于 2004-11-26 21:35 |只看该作者

请教高手:如果扩大程序使用的栈空间?

我不了解其他系统如何,但FreeBSD需要调整内核参数,比如我的参数:

options   MAXDSIZ=(1600UL*1024*1024)
options   MAXSSIZ=(1024UL*1024*1024)
options   DFLDSIZ=(1600UL*1024*1024)

表示堆栈的大小是第二个,1G空间。

论坛徽章:
0
37 [报告]
发表于 2004-11-26 23:57 |只看该作者

请教高手:如果扩大程序使用的栈空间?

[quote]原帖由 "quil"]还有,这个论坛管的太严了,这样的帖子还是越多越好,FH怎么不做斑竹啊。[/quote 发表:

因为FH没有责任心,呵呵。

论坛徽章:
0
38 [报告]
发表于 2005-03-09 11:21 |只看该作者

请教高手:如果扩大程序使用的栈空间?

晕,还能言归正传呢

论坛徽章:
0
39 [报告]
发表于 2005-03-09 12:15 |只看该作者

请教高手:如果扩大程序使用的栈空间?

我不同意FH关于内存分配的说法.MALLOC用来做BUFFER POOL尽管不完美,但不失为一种好方法.MALLOC使用的得当的话,并不会影响性能.之所以使用MALLOC分配大存储空间,也主要是考虑到OS的VM处理被频繁调度所产生的负面影响影响了系统的整体性能,并且,MALLOC分配的"VIRTUAL MEMORY"大小和实际OS分配的PHYSICAL MEMORY大小没有任何关系,OS仍然是通过VM子系统调度的,用MALLOC分配大存储单位也是为了避开VM子系统的开销而已,并且,这样的例子在现实系统中是很正常的.
比如,RDBMS,或者TP,SOA等东西,他们需要支持大数量的并发访问,需要一个在非线性的计算环境中实现线性的性能的话,不采用BUFFER技术,不采用并发处理怎么可能能做到?
WINDOWS慢的原因,和存储分配的大小有关系,但是,问题的根子不在存储分配自身,而在于WINDOWS自身,WINDOWS的MACRO KERNEL模式,和他自己的VM管理子系统对大资源的支持都不好.
256MBUFFER很正常.

论坛徽章:
0
40 [报告]
发表于 2005-03-09 12:35 |只看该作者

请教高手:如果扩大程序使用的栈空间?

同意柳五随风的说法。

还有,缺省的STACK大小对于一个好的正常的程序是不许要扩展的。
如果你发觉你的程序STACK益出了,需要的比系统DEFAULT STACK大小还大,那么十有89你写的程序有问题---大的变量不应该在栈中。

还有,除非非常频繁地malloc,free非常小的MEMORY,malloc对程序性能不会有什么影响。因此不需要多此一举自己再搞个什么MEM管理。malloc库已经做的很好了。

仅仅malloc分配的大小不影响速度。比如

  1. #include <stdio.h>;

  2. #define BUF_SIZE 2*1024*1024

  3. main()
  4. {
  5. char *cp;
  6.     cp = malloc(BUF_SIZE);
  7.     free(cp);
  8. }
复制代码


BUF_SIZE和速度无关,你分配1024字节或256M,速度应该一样(至少在LINUX)。因为这里并没有分配物理内存。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP