Я надеялся получить какие-то разъяснения относительно времени выполнения моего решения сообщества MSVS2015.Как включить влияет время выполнения на C++?
В основном я сделал довольно простое приложение, которое использует libcurl для получения исторических данных из файла CSV из yahoo finance. Данные с 2010 по 2016 год, сбрасываются в файл csv в папке решения.
Причина, по которой я поднимаю этот вопрос, заключается в том, что, поскольку я изменил решение, просто используя единственный .cpp, выполняющий все, чтобы создавать новые .cpp-файлы, чтобы в основном сделать код более удобным для обслуживания, время выполнения от 1 секунды до около 3 секунд. Это мой первый опыт работы с несколькими файлами .cpp и .h, поэтому у меня очень ограниченный опыт в том, как включение их может повлиять на время выполнения.
Итерировать по вопросу; он действительно работает нормально - я просто хочу понять, как время выполнения может быть намного дольше при внесении таких простых изменений.
Вот код:
historical.cpp
#include "stdafx.h"
#include "historical.h"
using namespace std;
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
historical::historical(string symbol) {
_mQueryString = "http://ichart.yahoo.com/table.csv?s=" + symbol + "&a=00&b=01&c=2010&d=01&e=01&f=2016&d=m&ignore=.csv"; // setup the query by adding the string param. (2010-2016).
CURL *curl; // initialize cURL
CURLcode res; // setup a response
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, _mQueryString);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &_mHistorical);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
string* pBuffer = &_mHistorical;
}
}
string* historical::getHistorical() {
return &_mHistorical;
}
historical::~historical() {
cout << "The object is deleted";
}
historical.h
#pragma once
//======================
//include guard
#ifndef __HISTORICAL_H_INCLUDED__
#define __HISTORICAL_H_INCLUDED__
//======================
// forward declared dependencies
//======================
// included dependencies::
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <curl/curl.h>
#include <string>
//======================
// historical::
using namespace std;
class historical {
public:
historical(string symbol);
string* getHistorical();
~historical();
private:
string _mHistorical;
string _mQueryString;
};
#endif
geostocks.cpp (в том числе основной())
// geostocks.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <curl/curl.h>
#include <string>
#include "historical.h"
using namespace std;
void writer(string* pInput);
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main(void)
{
historical his("AAPL");
string output;
output = *his.getHistorical();
writer(&output);
return 0;
}
void writer(string* pInput) {
ofstream mf("test.csv");
if (mf.is_open()) {
mf << *pInput;
mf.close();
}
else cout << "Unable to open file" << endl;
}
Ваше время приложения кажется действительно зависящим от времени HTTP-запросов, что не является самым предсказуемым для синхронизации. – Jarod42
Вы по существу измеряете, сколько времени требуется для загрузки данных (и для сервера для его подготовки), и можно ожидать нескольких секунд. – molbdnilo
См., Я понимаю, что могут быть варианты того, сколько времени потребуется серверу для обработки и подготовки данных из HTTP-запроса. Однако не кажется ли несколько маловероятным, чтобы запрос (два идентичных запроса) выполнял разную длину выполнения? Я повторно запускаю оба решения, и это «разделенное» решение занимает 3-4 секунды, тогда как неделимое занимает менее 1 секунды для выполнения. – geostocker