C++ 进程内函数调用的开销
据 较旧的语言在子例程调用中有开销,这 阻止人们使用小方法。现代OO语言有很多优点 大大减少了进程内调用的开销 现代OO语言是如何消除这种开销的?作者指的是内联函数吗?我想是的。C++ 进程内函数调用的开销,c++,function,oop,C++,Function,Oop,据 较旧的语言在子例程调用中有开销,这 阻止人们使用小方法。现代OO语言有很多优点 大大减少了进程内调用的开销 现代OO语言是如何消除这种开销的?作者指的是内联函数吗?我想是的。 此外,当调用需要通过堆栈传递大量参数时,调用的开销也很大。作者提到了OO语言,在OO语言中,许多参数可能被包装在“this”指针中,该指针在ecx寄存器中传递(要了解有关“thiscall调用约定”的更多信息)。有两种改进可以减少/消除函数调用的开销: CPU演进: 编译器演变: 编译器(也基于概要文件数据)可以检
此外,当调用需要通过堆栈传递大量参数时,调用的开销也很大。作者提到了OO语言,在OO语言中,许多参数可能被包装在“this”指针中,该指针在ecx寄存器中传递(要了解有关“thiscall调用约定”的更多信息)。有两种改进可以减少/消除函数调用的开销:
- CPU演进:
- 编译器演变:
由于现代CPU功能非常强大,因此值得尝试更好地组织代码(更少的维护=更少的工作=减少的开发成本),而不是花时间对其进行微优化(如果在几乎所有情况下都由编译器进行微优化,则微优化会更好)。很好,然而,实际上解决“这个”可能导致缓存丢失wich比传递一打要昂贵parameters@kravchenko当你说,很多参数可以被包装在“这个”指针中,你的意思是,C++成员函数可以访问成员属性,而不需要将它们作为参数传递。我理解正确了吗,或者你是说别的什么?你说的是指令还是数据?既然您提到了可执行文件的大小,我想您是在谈论指令缓存,那么可执行文件大小的增加是如何导致指令缓存丢失的呢?不过,由于页面错误,它可能会减慢程序的速度。