КП и Go: вещественная арифметика, кто шустрее?
Решил я не откладывать в долгий ящик тест скорости программ на Go и КП. Набросал простенький цикл с вещественными числами. Ну очень тупой тест, но там где начинаются измерения -- там начинается наука.
Фишка тут вот в чём: и в Go, и в КП тип float=double для тех, кто не в теме. Т.е. короткие вещественные числа -- только для машинного обмена данными. (Интересны оба решения. Странно... Никто не хочет возиться с float32? Есть практика, доказывающая превосходство точной арифметики? А не заимствовали ли разработчики Go решение из Компонентного Паскаля?) И теоретически, работа с короткими числами должна идти несколько медленней. В Go тупо не предусмотрена математика с типом float32. Про КП я этого просто не знаю (не знал до теста). Как оказалось Go с типом float32 всё-таки на 10% работает медленней, чем с типом float64. Видимо, сказывается излишнее двойное преобразование float32->float64->float32. А в КП, что REAL, что SHORTREAL -- всё едино. Работает медленней на 5-7%, что говорит о конвертации REAL->SHORTREAL->REAL, либо в Go пользуется эффективный компилятор gcc 5.10. Но в целом, с учётом того, что у КП "удобства в доме" -- предпочтительней именно КП. Чего стоит одна возможность создать (или отредактировать уже существующую документацию?) В Go можно не так удобно посмотреть, и уж точно не отредактировать. По крайней мере, я в Go IDE такого не нашёл.
Я не проверял целочисленную арифметику, но обязательно при случае этим займусь)))
Фишка тут вот в чём: и в Go, и в КП тип float=double для тех, кто не в теме. Т.е. короткие вещественные числа -- только для машинного обмена данными. (Интересны оба решения. Странно... Никто не хочет возиться с float32? Есть практика, доказывающая превосходство точной арифметики? А не заимствовали ли разработчики Go решение из Компонентного Паскаля?) И теоретически, работа с короткими числами должна идти несколько медленней. В Go тупо не предусмотрена математика с типом float32. Про КП я этого просто не знаю (не знал до теста). Как оказалось Go с типом float32 всё-таки на 10% работает медленней, чем с типом float64. Видимо, сказывается излишнее двойное преобразование float32->float64->float32. А в КП, что REAL, что SHORTREAL -- всё едино. Работает медленней на 5-7%, что говорит о конвертации REAL->SHORTREAL->REAL, либо в Go пользуется эффективный компилятор gcc 5.10. Но в целом, с учётом того, что у КП "удобства в доме" -- предпочтительней именно КП. Чего стоит одна возможность создать (или отредактировать уже существующую документацию?) В Go можно не так удобно посмотреть, и уж точно не отредактировать. По крайней мере, я в Go IDE такого не нашёл.
Я не проверял целочисленную арифметику, но обязательно при случае этим займусь)))
Комментарии
Отправить комментарий