|
|
1
27
流的标准库设计支持的远不止
此外,流操作通常在内部使用可增长缓冲区;这意味着相对较慢的内存分配。 |
|
|
2
9
我们用sprintf(使用静态分配的缓冲区)替换了内部循环中的一些字符串流,这在msvc和gcc中都有很大的不同。我想这段代码的动态内存管理: {
char buf[100];
int i = 100;
sprintf(buf, "%d", i);
// do something with buf
}
比 {
std::stringstream ss;
int i = 100;
ss << i;
std::string s = ss.str();
// do something with s
}
但我对stringstreams的整体表现非常满意。 |
|
3
8
有些人可能会告诉你,这些函数不能比彼此更快,但它们的实现可以。没错,我想我会同意的。 除了基准测试之外,你不太可能注意到其他方面的差异。c++流媒体的原因 倾向 速度较慢是因为它们更灵活。灵活性往往以时间或代码增长为代价。
在这种情况下,C++流基于流缓冲区。就其本身而言,流只是保持格式和错误标志的外壳,并调用正确的
所有这些机制——方面和缓冲区——都是通过虚拟函数实现的。虽然确实没有标记 注意,这些函数的实现速度必须比c stdio悬架慢 这一事实将使它们比正常使用c stdio函数慢一些(我不久前用gcc/libstdc++进行了基准测试,事实上注意到了速度的减慢,但在日常使用中几乎没有注意到)。 |
|
|
4
3
这绝对是具体的实施。 但如果你真的想知道,写两个小程序,并对它们进行比较。您需要包括您所想到的典型用法,这两个程序需要生成相同的字符串,并且您将使用分析器来查看计时信息。 那你就知道了。 |
|
|
5
1
一个问题可能是
|
|
|
6
0
|
|
|
7
0
这很可能是因为
|
|
|
8
0
是的,如果你用Visual C++5.0在几百万个数字上运行下面的函数,第一个版本大约需要第二个版本的两倍时间,并产生相同的输出。
将紧密循环编译为.exe并运行Windows
|
|
|
9
-1
我知道printf家族函数比相应的C++函数(cout、cin和其他流)更快的一个原因是后者进行类型检查。由于这通常涉及对超载操作员的一些请求,因此可能需要一些时间。 事实上,在编程竞赛中,通常建议您使用printf等人,而不是cout/cin,正是出于这个原因。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 9 月前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 9 月前 |
|
|
Bobby · 复合字面值总是左值吗? 9 月前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 9 月前 |