函数中使用栈与使用堆时函数执行效率浅对比
函數(shù)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);
}
函數(shù)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);
}
函數(shù)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);
}
函數(shù)uart_net_send()是一個(gè)需要快速運(yùn)行完畢的函數(shù),它的執(zhí)行時(shí)間越短,設(shè)備的轉(zhuǎn)發(fā)數(shù)據(jù)的速度就越快,執(zhí)行效率就越高。
經(jīng)實(shí)驗(yàn),在以上三個(gè)函數(shù)實(shí)現(xiàn)中,函數(shù)3最慢,函數(shù)1最快。
總結(jié)
以上是生活随笔為你收集整理的函数中使用栈与使用堆时函数执行效率浅对比的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32 堆和栈(stm32 Heap
- 下一篇: numpy教程:快速傅里叶变换模块num