Информация об изменениях

Сообщение Re[7]: [performance] чего-то я не понимаю в этой жизни от 30.06.2022 19:57

Изменено 30.06.2022 20:00 rg45

Re[7]: [performance] чего-то я не понимаю в этой жизни
Здравствуйте, Codealot, Вы писали:

C>Там слишком много всего. Конкретно та функция, которая в вопросе — здесь Re[2]: [performance] чего-то я не понимаю в этой жизни
Автор: Codealot
Дата: 30.06.22


Так ворос не про эту функцию. Вопрос про полные тексты примеров — обоих — которые можно скопировать и выполнить.

C>Тебе нужно изменить твои входные данные, чтобы там были случайные целые от 0 до INT_MAX. Не знаю, как в плюсах это нормально делается.


Не вопрос, любой каприз для дорогого гостя:

  C++ 470 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)
   {
      const int number = int(int64_t(std::rand()) * std::numeric_limits<int32_t>::max() / RAND_MAX);
      v.push_back(std::to_wstring(number));
   }
   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;
}


И даже после этого пример на плюсах быстрее примера на шарпе (в котором маленькие числа).

C>А каким образом получается такая скорость — это, собственно, я и сам хотел бы знать.


Могу только повториться: для этого нужно предоставить полные тексты твоих примеров. Ибо стеклянный шар уже попробовали — не помогло.
Re[7]: [performance] чего-то я не понимаю в этой жизни
Здравствуйте, Codealot, Вы писали:

C>Там слишком много всего. Конкретно та функция, которая в вопросе — здесь Re[2]: [performance] чего-то я не понимаю в этой жизни
Автор: Codealot
Дата: 30.06.22


Так ворос не про эту функцию. Вопрос про полные тексты примеров — обоих — которые можно скопировать и выполнить.

C>Тебе нужно изменить твои входные данные, чтобы там были случайные целые от 0 до INT_MAX. Не знаю, как в плюсах это нормально делается.


Не вопрос, любой каприз дорогого гостя:

  C++ 470 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)
   {
      const int number = int(int64_t(std::rand()) * std::numeric_limits<int32_t>::max() / RAND_MAX);
      v.push_back(std::to_wstring(number));
   }
   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;
}


И даже после этого пример на плюсах быстрее примера на шарпе (в котором маленькие числа).

C>А каким образом получается такая скорость — это, собственно, я и сам хотел бы знать.


Могу только повториться: для этого нужно предоставить полные тексты твоих примеров. Ибо стеклянный шар уже попробовали — не помогло.