程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c-小白關於調用函數的問題

c-小白關於調用函數的問題

編輯:編程解疑
小白關於調用函數的問題

請問下例如要測試多組數據的大小排列可以在int main 一點一點比較 也可以在外面創建個函數比較後調用
請問這兩種方法哪個方法在運行的時候更加省時間呢? 求指教謝謝了

最佳回答:


時間基本上沒啥明顯區別
正常的帶參數的函數,一般有以下幾步:
1. 用push指令將參數入棧,如果是基本類型,有幾個參數就需要幾條push指令
2. call指令進入被調用函數,先保存IP寄存器的值,再將函數入口地址存入IP
3. 被調用函數將返回地址和基址EBP壓入棧,並分配棧空間需要3條指令
pushl %ebp
movl %esp, %ebp
subl $xx, %esp
4. 函數返回時恢復棧,需要leave和ret兩條指令,leave釋放棧空間並恢復EBP,恢復IP寄存器的值

所以需要6條以上的指令開銷,如果參數是結構體的話,需要拷貝復制指令,這個開銷就大了。

提高C++程序運行效率的10個簡單方法:http://www.jb51.net/article/54792.htm

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved