大缓冲区vs大静态缓冲区,有没有优势? [英] Large buffers vs Large static buffers, is there an advantage?

查看:207
本文介绍了大缓冲区vs大静态缓冲区,有没有优势?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请考虑以下代码。

DoSomething1()比DoSomething2()快了1000次连续执行吗?
我假设如果我在哪里调用DoSomething1()它1000次它会更快,然后调用DoSomething2()它1000次。

Is DoSomething1() faster then DoSomething2() in a 1000 consecutive executions? I would assume that if I where to call DoSomething1() it 1000 times it would be faster then calling DoSomething2() it 1000 times.

有任何缺点是使我所有的大型缓冲区都是静态的?

Is there any disadvantage to making all my large buffers static?

#define MAX_BUFFER_LENGTH 1024*5 
void DoSomething1()
{
    static char buf[MAX_BUFFER_LENGTH] ; 
    memset( buf, 0, MAX_BUFFER_LENGTH );
}

void DoSomething2()
{
    char buf[MAX_BUFFER_LENGTH] ; 
    memset( buf, 0, MAX_BUFFER_LENGTH );
}

感谢您的时间。

推荐答案

静态缓冲区的缺点


  • 如果你需要线程安全,那么使用静态缓冲区可能不是一个好主意。

  • 内存不会被释放,直到程序结束,因此使您的内存消耗更高。

静态缓冲区的优点


  • 你不需要每次都在堆栈上分配。

  • 对于静态缓冲区,由于分配过高,堆栈溢出的可能性较小。

这篇关于大缓冲区vs大静态缓冲区,有没有优势?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆