函数1,

void uart_net_send(struct tls_uart *uart, u32 head, u32 tail, int count)

{
    struct tls_uart_circ_buf *recv = &uart->uart_port->recv;

char *uart_net_send_data = NULL;

uart_net_send_data  = malloc(UART_NET_SEND_DATA_SIZE);

memset( uart_net_send_data , 0,  UART_NET_SEND_DATA_SIZE);

if (count >= UART_NET_SEND_DATA_SIZE)
    {
        buflen = UART_NET_SEND_DATA_SIZE;
        count = count - UART_NET_SEND_DATA_SIZE;
    }

MEMCPY(uart_net_send_data, recv->buf + tail, buflen);

}

函数2,

void uart_net_send(struct tls_uart *uart, u32 head, u32 tail, int count)

{
    struct tls_uart_circ_buf *recv = &uart->uart_port->recv;

char uart_net_send_data[UART_NET_SEND_DATA_SIZE] = {0};

if (count >= UART_NET_SEND_DATA_SIZE)
    {
        buflen = UART_NET_SEND_DATA_SIZE;
        count = count - UART_NET_SEND_DATA_SIZE;
    }

MEMCPY(uart_net_send_data, recv->buf + tail, buflen);

}

函数3,

void uart_net_send(struct tls_uart *uart, u32 head, u32 tail, int count)

{
    struct tls_uart_circ_buf *recv = &uart->uart_port->recv;

char uart_net_send_data[UART_NET_SEND_DATA_SIZE];

if (count >= UART_NET_SEND_DATA_SIZE)
    {
        buflen = UART_NET_SEND_DATA_SIZE;
        count = count - UART_NET_SEND_DATA_SIZE;
    }

MEMCPY(uart_net_send_data, recv->buf + tail, buflen);

}

函数uart_net_send()是一个需要快速运行完毕的函数,它的执行时间越短,设备的转发数据的速度就越快,执行效率就越高。

经实验,在以上三个函数实现中,函数3最慢,函数1最快。

函数中使用栈与使用堆时函数执行效率浅对比相关推荐

  1. JS中的栈内存和堆内存

    JS中的栈内存和堆内存 JS的内存空间分为栈(stack).堆(heap).池(一般也会归类为栈中). 其中栈存放变量,堆存放复杂对象,池存放常量,所以也叫常量池. 栈数据结构 栈是一种特殊的列表,栈 ...

  2. 内存中的栈空间与堆空间

    内存中的栈空间与堆空间 https://www.jiuzhang.com/tutorial/algorithm/352 我们通常所说的内存空间,包含了两个部分:栈空间(Stack space)和堆空间 ...

  3. 如何给女朋友讲明白:Java中Stack(栈)与Heap(堆)

    背景 Java中Stack(栈)与Heap(堆)是面试中被经常问到的一个话题. 有没有对Java中Stack(栈)与Heap(堆)烂熟于心的童鞋,请举手!!!(怎么没人举手-) 这个时候蜗牛哥的对象弱 ...

  4. C语言signal()函数(通过设置一个函数(回调函数)来处理捕获到异常信号时需要执行的操作)

    文章目录 描述 声明 参数 返回值 实例 附加解释 背景知识:C语言中signal函数简介及使用 描述 C 库函数 void (*signal(int sig, void (*func)(int))) ...

  5. C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数,若为素数函数返回值为1,否则为0。在主函数中输入一个整数x,调用函数isprime(x)来判断这个整数x是

    原题: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数,若为素数函数返回值为1,否则为0.在主函数中输入一个整数x,调用函数isprime(x)来判断这个整数x是不是 ...

  6. JS 中的 栈内存和堆内存

    栈内存 1.访问顺序 栈是一种先进后出的数据结构,栈内存是内存中用于存放临时变量的一片内存块. 它是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶,另一端称为栈底. 2.存储数据 一 ...

  7. Java中的栈内存和堆内存

    共两篇文章 第一篇 1.Java中对象都是分配在heap(堆)中.从heap中分配内存所消耗的时间远远大于从stack产生存储空间所需的时间. (1)每个应用程序运行时,都有属于自己的一段内存空间,用 ...

  8. python函数中把列表(list)当参数时的入坑与出坑

    在Python函数中,传递的参数如果默认有一个为 列表(list),那么就要注意了,此处有坑. 入坑 挖坑 def f(x,li=[]):for i in range(x):li.append(i*i ...

  9. python函数参数为列表_python函数中把列表(list)当参数时的入坑与出坑

    在Python函数中,传递的参数如果默认有一个为 列表(list),那么就要注意了,此处有坑. 入坑 挖坑 def f(x,li=[]): for i in range(x): li.append(i ...

最新文章

  1. 能和LoadRunner匹敌的VS2010/2012Web负载测试
  2. 一个菜鸟程序猿--再谈六月坚持英语学习
  3. 【DIY】手把手教你 DIY 最便宜的 arduino 温湿度计,详细图文视频教程
  4. linux安装mysql字符_Linux下MySQL的彻底卸载和安装配置字符集
  5. 第十届蓝桥杯决赛JavaC组真题——详细答案对照(完整版)
  6. ubuntu 21.04 版本上 安装 sqlcmd
  7. 操作系统(8)-存储系统
  8. 大数据之-Hadoop之HDFS的API操作_写数据流程_上传数据原理剖析_案例---大数据之hadoop工作笔记0066
  9. 基于高光谱技术的农作物常见病害监测研究
  10. css:transform,transition,animation总结
  11. Hadoop环境共享
  12. 2019最新PHP100项目实战(PHP新手入门教程)
  13. 计算机专业窗体的事件何时触发,高三计算机专业VB试题(六)1
  14. TMS570-5-RTI精准延时
  15. 迎奥运,20个帮助你塑造体形的网站
  16. 华三交换机ping不通用户但用户_华三交换机ping不通路由器
  17. Codeforces364D Ghd【随机+检验】
  18. 如何做好软件可靠性测试?
  19. zypper in 安装下载不了_强大音频制作软件 Cubase Pro 10.5 中文版(附安装教程)
  20. TTMS剧院票务管理系统全网最全!!!不接受反驳

热门文章

  1. SVG动画.animateTransform
  2. 使用密码记录工具keepass来保存密码
  3. 张艾迪(创始人): 梦想与未来
  4. php header
  5. 人工构造迭代次数高度简并的神经网络训练集
  6. pageinfo对合并list进行分页_Pagehelper不是特别好用。对list直接分页
  7. android frida 检测_frida测试方法整理
  8. 微软发布的python教程_微软发布Python 教程《Develop with Python on Windows》
  9. 文档上传下载 php开源,PHP文件的上传下载 - PHP开发学习门户的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. 【Paper】2006_Time-Optimal Control of a Hovering Quad-Rotor Helicopter