我希望能对我的MSVS2015社区解决方案的运行时间做一些澄清。
我基本上做了一个非常简单的应用程序,它使用libcurl从雅虎财经的CSV文件中获取历史数据。数据从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(包括main())
// 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;
}
答案 0 :(得分:2)
完全没有任何意义。
你的观察远更可能是由于网络HTTP请求,你不是吗?
答案 1 :(得分:2)
当您包含文件,.cpp或.h时,文件的内容将被简单地复制到包含文件中以准备编译阶段。
预处理程序指令基本上是基于文本的操作,不应影响程序的执行速度。
正如您所提到的,将代码分离为实现和接口文件有助于代码的可维护性。
答案 2 :(得分:1)
分割/组织代码的方式不会影响可执行文件的运行时间。