非诚勿扰

运行程序:

#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! 正好有 1212 个字符,如图

我的代码是这样的:

#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毫秒

然而,该程序执行使用了 5ms5ms

按理说评测机只会记录程序运行时间,而不会记录编译时消耗的时间(bits/stdc++.h 自己编译时是真的慢),为何会多消耗4毫秒?

来自蒟蒻的疑惑

1 条评论

  • @ 2024-8-7 14:18:19

    评测机应该记录了初始化的时间吧

    • 1

    信息

    ID
    1
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    (无)
    递交数
    2477
    已通过
    1210
    上传者