C++HTTPS库在性能方面如何比较(例如内存占用、CPU时间等)
How do C++ HTTPS libraries compare in terms of performance (e.g. memory footprint, CPU time, etc?)
我看到过几篇文章,说一个网络库由于功能或易用性而比另一个更好,但我没有看到任何与性能有关的内容。我查遍了谷歌,找不到任何比较。
我即将开始一个网络项目,我想使用Poco或libCurl。我对我最初计划使用Boost.ASIO的光很感兴趣,但它没有HTTPS客户端实现。它确实有一个在Boost.ASIO中实现的示例HTTPS客户端,但没有实际的协议处理程序。
- 这并不重要。瓶颈几乎肯定是网络媒体,或者你在HTTPS连接上进行的任何处理。SSL在CPU时间方面很便宜。(不幸的是,就网络延迟而言,它并不便宜,但库性能在这方面并不重要)
- 性能总是一系列的权衡。要想知道哪个库最适合你,唯一的方法就是尝试其中的一些。最有可能的是,你会看到微不足道的差异
如果您想要https支持,最好使用libcurl。libcurl支持https和http over proxy,https over proxy。如果需要支持代理,则应仅设置HTTP_proxy环境变量。
Curl提供类似fwrite的回调,将数据写入缓冲区。
#include <curl/curl.h>
typedef struct {
char* data; // response data from server
size_t size; // response size of data
} MEMFILE;
MEMFILE*
memfopen() {
MEMFILE* mf = (MEMFILE*) malloc(sizeof(MEMFILE));
if (mf) {
mf->data = NULL;
mf->size = 0;
}
return mf;
}
void
memfclose(MEMFILE* mf) {
if (mf->data) free(mf->data);
free(mf);
}
size_t
memfwrite(char* ptr, size_t size, size_t nmemb, void* stream) {
MEMFILE* mf = (MEMFILE*) stream;
int block = size * nmemb;
if (!mf) return block; // through
if (!mf->data)
mf->data = (char*) malloc(block);
else
mf->data = (char*) realloc(mf->data, mf->size + block);
if (mf->data) {
memcpy(mf->data + mf->size, ptr, block);
mf->size += block;
}
return block;
}
char*
memfstrdup(MEMFILE* mf) {
char* buf;
if (mf->size == 0) return NULL;
buf = (char*) malloc(mf->size + 1);
memcpy(buf, mf->data, mf->size);
buf[mf->size] = 0;
return buf;
}
int main() {
CURL* curl;
MEMFILE* mf;
char* ptr;
mf = memfopen();
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "https://github.com");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, mf);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, memfwrite);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
ptr = memfstrdup(mf);
printf("%sn", ptr);
free(ptr);
memfclose(mf);
}
相关文章:
- 使用Boost Interprocess创建托管共享内存需要很长时间
- 随着时间的推移,我的程序越来越慢,我不知道为什么.内存泄漏
- 多次分配内存是否一次性需要更多时间?
- 测量任何 Windows 可执行文件的内存使用情况和执行时间
- 如何在 ubuntu 上的 php 脚本中获取程序(c,c++,java,python,php)的执行时间和内存使用量?
- 在模板中,有没有办法为每个时间实例化只编写一个专用化?(纳秒、毫秒、秒等)
- C 获得运行时间和内存使用量
- 如何在以下C程序中计算运行时间内存和最大数据存储器使用情况
- 加载时间,遍历时间,不同数据段C/C 的内存使用率
- 持续的时间访问是否在某个时候意味着连续内存
- 运行时间内存分配错误
- 为什么内存访问时间远远超过CPU缓存大小时会增加
- 从文件读取/写入时出现内存和时间问题
- 在O(n)时间O(n)内存中计算最大(a [i.i d]))
- 如何使用任意数量的(编译时间确定的)容器创建一个内存池
- 对于长时间运行的程序,STL 内存管理是否"reliable"?
- 在内存使用或编译时间方面更好的是什么
- 从zip、内存等加载动态库
- 在内存泄漏等方面不是可以吗
- C++HTTPS库在性能方面如何比较(例如内存占用、CPU时间等)