- 你好,梦熊 OJ!
困惑,求解
- 2024-8-7 12:10:00 @
非诚勿扰
运行程序:
#include <stdio.h>
#include <time.h>
int main() {
clock_t start, end;
int count = 0;
int batch_size = 1000; // 每次批量调用的次数
start = clock();
while (1) {
for (int i = 0; i < batch_size; i++) {
putchar('A');
}
count += batch_size;
end = clock();
if (((double) (end - start)) / CLOCKS_PER_SEC >= 1.0) {
break;
}
}
double elapsed_time = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("\nNumber of putchar calls in one second: %d\n", count);
printf("Elapsed time: %f seconds\n", elapsed_time);
return 0;
}
输出的最后2行:
Number of putchar calls in one second: 12000
Elapsed time: 1.005000 seconds
可以看出 putchar()
函数一秒内可以执行12000次,也就是每毫秒12次
而字符串 Hello, MXOJ!
正好有 个字符,如图
我的代码是这样的:
#include <stack>
#include <string>
void printf(std::string s) {
int len = s.length();
std::stack<int> st;
while (len --> 0)
st.push(s[len]);
while (!st.empty())
putchar(st.top()),
st.pop();
}
int main() {
std::string hola = "Hello, MXOJ!";
printf(hola);
return 0;
}
那么,我们会普遍认为程序运行只需要1毫秒
然而,该程序执行使用了
按理说评测机只会记录程序运行时间,而不会记录编译时消耗的时间(bits/stdc++.h
自己编译时是真的慢),为何会多消耗4毫秒?
来自蒟蒻的疑惑
1 条评论
-
WMWD LV 1 @ 2024-8-7 14:18:19
评测机应该记录了初始化的时间吧
- 1
信息
- ID
- 1
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- (无)
- 递交数
- 2477
- 已通过
- 1210
- 上传者