0325-Qt镜像速度排行

前言

给别人安装QT的时候遇到了需要镜像的情况

下载 online-installer

https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/

执行安装程序

.\qt-online-installer-windows-x64-4.8.1.exe --mirror https://mirrors.aliyun.com/qt/

发现

我们注意到这里

--mirror https://mirrors.aliyun.com/qt/

用到了镜像站地址,我在实际使用的时候发现,不同镜像站的下载安装速度不一样。
于是我测试了一下,发现 USTC 的镜像站速度居然比 tsinghua 的还要快,这让我大为震撼。

QT镜像站

以下是一些 Qt 镜像站

中国科学技术大学:http://mirrors.ustc.edu.cn/qtproject/
清华大学:https://mirrors.tuna.tsinghua.edu.cn/qt/
北京理工大学:http://mirror.bit.edu.cn/qtproject/
南京大学:https://mirror.nju.edu.cn/qt
腾讯镜像:https://mirrors.cloud.tencent.com/qt/
阿里云镜像:https://mirrors.aliyun.com/qt/
官网镜像列表:https://download.qt.io/static/mirrorlist/mirmon/

测试代码

下面的代码用于测试几个镜像站点的访问速度。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>

#define NUM_MIRRORS 8

// 镜像站列表
const char* mirrors[NUM_MIRRORS] = {
    "http://mirrors.ustc.edu.cn/qtproject/",
    "https://mirrors.tuna.tsinghua.edu.cn/qt/",
    "http://mirror.bit.edu.cn/qtproject/",
    "https://mirror.nju.edu.cn/qt",
    "https://mirrors.cloud.tencent.com/qt/",
    "https://mirrors.aliyun.com/qt/",
    "https://download.qt.io/static/mirrorlist/mirmon/",
    "https://download.qt.io/"
};

// 回调函数,用于测量响应时间
size_t write_callback(void* contents, size_t size, size_t nmemb, void* userp) {
    return size * nmemb; // 简单地返回数据大小
}

int main() {
    CURL* curl;
    CURLcode res;
    struct curl_slist* headers = NULL;
    double response_time;
    int i;

    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();

    if (curl) {
        headers = curl_slist_append(headers, "Accept: */*");
        headers = curl_slist_append(headers, "Connection: close");

        for (i = 0; i < NUM_MIRRORS; i++) {
            curl_easy_setopt(curl, CURLOPT_URL, mirrors[i]);
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
            curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
            curl_easy_setopt(curl, CURLOPT_NOBODY, 1L); // 只获取头部信息,不下载内容
            curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10L); // 设置超时时间为10秒

            res = curl_easy_perform(curl);

            if (res != CURLE_OK) {
                fprintf(stderr, "curl_easy_perform() failed for %s: %s\n", mirrors[i], curl_easy_strerror(res));
                continue;
            }

            curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &response_time);
            printf("Mirror: %s\nResponse Time: %.3f seconds\n", mirrors[i], response_time);
        }

        curl_easy_cleanup(curl);
        curl_slist_free_all(headers);
    }

    curl_global_cleanup();
    return 0;
}

编译

gcc -o mirror_test mirror_test.c -lcurl
如果报错说:

mirror_test.c:4:10: fatal error: curl/curl.h: No such file or directory
4 | #include <curl/curl.h>
| ^~~~~~~~~~~~~
compilation terminated.

则需要安装一个 libcurl

sudo apt-get install libcurl4-openssl-dev

测试结果:

我们可以看到:
bit北理工速度最快 10 毫秒, MVP
ustc以 30 毫秒的速度位居第二
南大 80毫秒
腾讯、阿里、tsinghua 都在 300-400 毫秒的区间,颇为滑稽
官方源 1.2 秒,纯纯躺赢狗  

posted @ 2025-03-25 10:35  lucky_doog  阅读(177)  评论(0)    收藏  举报