Здравствуйте, Codealot, Вы писали:
C>Ну начнем с того, что у тебя там string а не wstring. Так что ты сравниваешь яблоки с апельсинами.
Ok, мой косяк. С возрастом зрение слабеет, понимаешь, не разглядел, что у тебя stoi, показалось, что atoi.
Ну, давай исправим, какие проблемы:
| C++ (290 ms) |
| #include <iostream>
#include <vector>
#include <string>
#include <chrono>
std::vector<std::wstring> MakeIntSequence(int size)
{
std::vector<std::wstring> v;
v.reserve(size);
for (int i = 0; i < size; ++i)
{
v.push_back(std::to_wstring(i));
}
return v;
}
int main()
{
namespace tm = std::chrono;
const auto vals = MakeIntSequence(10000000);
const auto t0 = tm::steady_clock::now();
int hash{};
for (const auto& val : vals)
{
hash ^= std::stoi(val);
}
const auto dt = tm::duration_cast<tm::milliseconds>(tm::steady_clock::now() - t0);
std::cout << "Processing time: " << dt.count() << "ms" << std::endl;
}
|
| |
Все равно получается 300 против 800. Как ты умудрился получить плюсовый код в пять раз медленнее шарпного, по-прежнему остается загадкой. Моежт, приведешь уже полные тексты примеров?