我开始 win32 编程是为了好玩,因为我喜欢复杂的东西,我喜欢编程(这都是 Charles Petzold 和 Jeffrey Richter 写出如此漂亮的书的错。)可能是因为我对性能代码有兴趣。
现在,真正的问题是:我将使用 GetEnvironmentVariable()[一个 win32 API 函数] 和 getenv()[一个标准 CRT 函数] 的例子。
这两个都返回作为参数提供的环境变量的值。
那么使用哪个更有效,或者换句话说,哪个调用堆栈更短,哪个更直接?想想一些 func。被调用一百万次。
我相信它们中的任何一个映射到另一个。我是对的还是我在这里遗漏了什么。
总结:在为win32 api编程时,如果api和c/c++库中都有提供相同功能的函数,我应该使用哪个?
谢谢。
对于大多数应用,使用一个或其他 API 不太可能成为主要的性能问题。
CRT 和 C++ 标准库映射到 Win32 API,因此直接使用 Win32 会稍微更有效率。如果您需要编写可移植的 C 代码,请使用 CRT。
在 C++ 中,大多数情况下,使用标准库可以更轻松地生成符合惯用语的正确代码,这比直接使用 Win32 带来的边际性能提升更重要。
getenv
这可能不是一个很好的例子,因为映射到 Win32 是微不足道的。考虑转而复制 <iostream>
使用 Win32 API,好的库的好处变得更加清晰。
我是一名优秀的程序员,十分优秀!