Часто, не задумываясь, мы используем стандартные функции, например, вычисляя квадрат числа X, мы пишем z = Math.Pow(X,2). Другой вариант: z = X * X. Какой из них быстрее и во сколько раз?
Напишем простенькую программу, использующую класс DateTime. Чтобы разница была заметна, выполним возведение в квадрат N = 2 000 000 000 раз. Тогда:
using System; namespace скорость_вычислений_квадрата_числа { class Program { public static void Main() { int N = 2000000000; double x = 2; // Старт 1 var dt = DateTime.Now; var tm = dt.Minute; var ts = dt.Second; // Старт 1 var t = tm * 60 + ts; for (int j=0; j < N; j++) x = Math.Pow(x,2.0); dt = DateTime.Now; tm = dt.Minute; ts = dt.Second; // Финиш 1 t = tm * 60 + ts - t; Console.WriteLine("Через Pow(), секунд - " + t); // Старт 2 dt = DateTime.Now; tm = dt.Minute; ts = dt.Second; t = tm * 60 + ts; for (int j = 0; j < N; j++) x = x * x; dt = DateTime.Now; tm = dt.Minute; ts = dt.Second; // Финиш 2 t = tm * 60 + ts - t; Console.WriteLine("Перемножение, секунд - " + t); Console.ReadLine(); } } }
Результат на моем компьютере:
Через Pow(), секунд - 29
Перемножение, секунд - 9
Различие в три раза. Сделайте вывод.
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.
![]() |
![]() |
![]() |
![]() |