Сравнительный анализ производительности популярных языков программирования, используемых для создания web–приложений
Сравнение производительности популярных языков программирования, на которых создаются клиент-серверные приложения. Использование тестов для сравнения результатов времени выполнения и используемых ресурсов. Тестирование спектральной нормы матрицы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 20.08.2018 |
Размер файла | 77,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Электронный научно-практический журнал ИЮЛЬ 2017 «МОЛОДЕЖНЫЙ НАУЧНЫЙ ВЕСТНИК» |
|
ФИЗИКО-МАТЕМАТИЧЕСКИЕ НАУКИ |
Размещено на http://www.allbest.ru/
СРАВНИТЕЛЬНЫЙ АНАЛИЗ ПРОИЗВОДИТЕЛЬНОСТИ ПОПУЛЯРНЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ, ИСПОЛЬЗУЕМЫХ ДЛЯ СОЗДАНИЯ WEB - ПРИЛОЖЕНИЙ
Кузнецов А.С.
МФ МГТУ им. Н.Э. Баумана
Каждая программа и платформа имеет определенный предел производительности, и на эту производительность виляет используемый при разработке язык. В статье приводится сравнение производительности популярных языков программирования на которых создаются клиент серверные приложения. Для сравнения производительности использовались тесты и сравнивались результаты времени выполнения и количество используемых ресурсов.
Ключевые слова: языки программирования, производительность, сравнительный анализ, PHP, Python, Ruby.
COMPARATIVE PERFORMANCE ANALYSIS OF POPULAR PROGRAMMING LANGUAGES USED TO CREATE WEB APPLICATIONS
Kuznetsov A.S.
Each program and platform has a limit of productivity, and this productivity wags used to develop language. The article compares performance popular programming languages to create client server applications. To compare the performance of tests used and compared the results of the execution time and the number of used resources.
Keywords: programming languages, performance, comparative analysis, PHP, Python, Ruby
При планировании программного проекта имеется огромный выбор языков программирования, в лабиринтах которых легко заблудиться. Выбор языка зависит от многих факторов. Если это личный проект или хобби, можно выбрать знакомый вам язык. Если выбор зависит от имеющихся ресурсов, результат может быть весьма неочевидным. Можно также потратить много времени на разработку повторно используемых компонентов.
В данной работе приводится сравнение некоторых языков программирования предназначенных для создания клиент серверных приложений. Каждая программа и платформа имеет определенный предел производительности, и на эту производительность влияет используемый при разработке язык. Существует множество способов сравнения скорости работы в одинаковой среде программ, написанных на разных языках.
Для тестов производительности были написаны несколько одинаковых программ на разных языках. Тесты производились на Intel® Core™2 Quad Processor Q6600,4гб оперативной памяти и жестким диском 250GB SATA II, в качестве операционной системы Ubuntu 17.04 Linux x64 4.10.019-generic.
Версии языков программирования:
1. Ruby 2.4.0p0 [3]
2. Python 3.6. [2]
3. PHP 7.1.4 [1]
Спектральная норма матрицы. Программа должна вычислить спектральную норму бесконечной матрицы А с параметрами a11=1, a12=1/2, a21=1/3, a13=1/4, a22=1/5, a31=1/6, и т.д.
Таблица 1. Результаты тестирования расчета спектральной нормы матрицы на PHP.
Передаваемый параметр |
Время выполнения |
Использование памяти |
Загрузка CPU |
|
500 |
0.363 |
12412 |
94% 89% 86% 89% |
|
3000 |
13.099 |
19420 |
99% 99% 99% 99% |
|
5500 |
37.938 |
19420 |
99% 99% 100% 99% |
Таблица 2. Результаты тестирования расчета спектральной нормы матрицы на Python.
Передаваемый параметр |
Время выполнения |
Использование памяти |
Загрузка CPU |
|
500 |
1.796 |
53324 |
90% 86% 85% 85% |
|
3000 |
58.562 |
52924 |
98% 97% 98% 98% |
|
5500 |
188.826 |
54524 |
99%100%100% 99% |
Таблица 3. Результаты тестирования расчета спектральной нормы матрицы на Ruby.
Передаваемый параметр |
Время выполнения |
Использование памяти |
Загрузка CPU |
|
500 |
1.939 |
9712 |
82% 85% 79% 79% |
|
3000 |
42.055 |
49652 |
92% 92% 91% 92% |
|
5500 |
141.486 |
50156 |
96% 97% 96% 97% |
Множество Мандельброта. Программа должна построить множество [-1,5 - i, 0.5 + i] на NxN и записать результат побайтово в файл.
Таблица 4. Результаты выполнения расчета множества Мандельброта на PHP.
Передаваемый параметр |
Время выполнения |
Использование памяти |
Загрузка CPU |
|
1000 |
0.546 |
30560 |
84% 96% 98% 95% |
|
4000 |
7.937 |
55508 |
100%99% 99%100% |
|
16000 |
125.17 |
136776 |
100%100%100%100% |
Таблица 5. Результаты выполнения расчета множества Мандельброта на Python.
Передаваемый параметр |
Время выполнения |
Использование памяти |
Загрузка CPU |
|
1000 |
1.413 |
51200 |
92% 81% 79% 80% |
|
4000 |
17.712 |
51516 |
99% 99% 99% 99% |
|
16000 |
273.433 |
53416 |
100%100%100%100% |
производительность язык программирование серверный
Таблица 6. Результаты выполнения расчета множества Мандельброта на Ruby.
Передаваемый параметр |
Время выполнения |
Использование памяти |
Загрузка CPU |
|
1000 |
1.873 |
36400 |
97% 99% 97% 96% |
|
4000 |
28.596 |
38900 |
100%100%100%100% |
|
16000 |
463.951 |
69656 |
100%100%100%100% |
Бинарные деревья. Программа должна: выделить бинарное дерево, чтобы растянуть память, проверить ее наличие и освободить. Проверить долгоживущие бинарные деревья, которые будут продолжать существовать, пока другие деревья выделяются и освобождаются. Выделить, пройти и освободить многие восходящие бинарные деревья: Выделить деревья, пройти дерево, посчитать узлы, освободить дерево, проверить есть ли еще долгоживущие деревья.
Таблица 7. Результаты выполнения расчета бинарных деревьев на PHP.
Передаваемый параметр |
Время выполнения |
Использование памяти |
Загрузка CPU |
|
7 |
0.073 |
0 |
100% 14% 0% 0% |
|
14 |
0.472 |
36184 |
87% 85% 49% 57% |
|
21 |
88.07 |
736372 |
92% 77% 23% 91% |
Таблица 8. Результаты выполнения расчета бинарных деревьев на Python.
Передаваемый параметр |
Время выполнения |
Использование памяти |
CPU |
|
7 |
0.195 |
0 |
0.104 |
|
14 |
0.592 |
54636 |
1.536 |
|
21 |
86.903 |
451548 |
306.312 |
Таблица 9. Результаты выполнения расчета бинарных деревьев на Ruby.
Передаваемый параметр |
Время выполнения |
Использование памяти |
Загрузка CPU |
|
7 |
0.065 |
0 |
0% 0% 100% 14 |
|
14 |
0.373 |
34880 |
47% 78% 92% 63% |
|
21 |
54.241 |
510868 |
73% 98% 67% 72% |
Получение перестановок. Программа должна: Совершить перестановку {1,...,n}, взять первый элемент и реверсировать порядок первых элементов, повторять данное действие, до тех пор, пока первый элемент не станет 1, подсчитать число переворотов, сохранить контрольную сумму.
Делать для всех n! перестановок и записать максимальное число переворотов необходимое для любой перестановки.
Таблица 10. Результаты получения перестановок на PHP.
Передаваемый параметр |
Время выполнения |
Использование памяти |
Загрузка CPU |
|
10 |
1.555 |
33516 |
99% 97% 99% 99% |
|
11 |
18.981 |
33444 |
100% 99% 99% 100% |
|
12 |
280.035 |
33588 |
100%100%100%100% |
Таблица 11. Результаты получения перестановок на Python.
Передаваемый параметр |
Время выполнения |
Использование памяти |
Загрузка CPU |
|
10 |
3.297 |
51772 |
98% 87% 92% 92% |
|
11 |
36.937 |
52996 |
100%100% 93% 97% |
|
12 |
483.794 |
51896 |
97% 94% 100% 99% |
Таблица 12. Результаты получения перестановок на Ruby.
Передаваемый параметр |
Время выполнения |
Использование памяти |
Загрузка CPU |
|
10 |
4.485 |
33436 |
99% 91% 96% 79% |
|
11 |
52.715 |
33180 |
100% 90% 97% 97% |
|
12 |
710.579 |
33348 |
99% 99% 95% 97% |
В результате тестов были построены графики. По времени выполнения программы, в соответствии с графиком 1, в четырех из пяти тестов, язык PHP показал лучший результат, выполняя код в среднем в два раза быстрее, чем другие языки. По потребление оперативной памяти во время исполнения программы, в соответствии с графиком 2, при более тяжелых вычислениях, меньше объёма использует Python, в более простых - PHP.
Электронный научно-практический журнал ИЮЛЬ 2017 «МОЛОДЕЖНЫЙ НАУЧНЫЙ ВЕСТНИК» |
|
ФИЗИКО-МАТЕМАТИЧЕСКИЕ НАУКИ |
Размещено на http://www.allbest.ru/
График 1. Время выполнения.
Электронный научно-практический журнал ИЮЛЬ 2017 «МОЛОДЕЖНЫЙ НАУЧНЫЙ ВЕСТНИК» |
|
ФИЗИКО-МАТЕМАТИЧЕСКИЕ НАУКИ |
Размещено на http://www.allbest.ru/
График 13. Использование RAM.
При использовании в качестве серверного языка PHP, можно добиться высокой скорости отдачи данных клиентам по сравнению с другими языками, единственным ограничением будет сам сервер. В случае с Python выполнение будет около двух раз медленнее чем PHP, но при этом потребление памяти в ниже. Это может быть критично только если у вас слабый сервер, а вычисление довольно тяжелые, в остальных же случаях данный параметр не столь критичен. Ruby в некоторых тестах показывал хорошие результаты, но в совокупности оказался менее производительным.
Список литературы
1. Документация по языку PHP. URL: http://php.net/docs.php
2. Документация по языку Python. URL: http://ruby-doc.org/
3. Документация по языку Ruby. URL: https://docs.python.org/3/
Размещено на Allbest.ru
Подобные документы
Характеристика компьютерных игр и их влияние на формирование навыков Softskills. Геймификация как современный тренд в образовании. Обзор наиболее популярных языков программирования для создания игровых приложений. Техническое задание для приложения.
дипломная работа [928,4 K], добавлен 13.01.2023Характеристики и свойства языков программирования. Исследование эволюции объектно-ориентированных языков программирования. Построение эволюционной карты механизмов ООП. Разработка концептуальной модели функционирования пользовательского интерфейса.
курсовая работа [2,6 M], добавлен 17.11.2014Исследование возможностей и областей использования языка программирования JavaScript. Сравнительный анализ языков программирования JavaScript и PHP. Разработка интерактивного Web-приложения на примере теста по теме "Программирование на языке Delphi".
практическая работа [26,0 K], добавлен 04.02.2015Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.
курсовая работа [345,6 K], добавлен 13.11.2009Рассмотрение и ознакомление с одним из наиболее используемых языков программирования - С++. Его применение в процессе работы со строковыми типами данных и символами. Исследование кодов написания программ в режиме разработки консольного приложения.
курсовая работа [6,1 M], добавлен 20.01.2016Рассмотрение общих сведений и уровней языков программирования. Ознакомление с историей развития, использования языков программирования. Обзор достоинств и недостатков таких языков как Ассемблер, Паскаль, Си, Си++, Фортран, Кобол, Бейсик, SQL, HTML, Java.
курсовая работа [759,5 K], добавлен 04.11.2014Ознакомление с ситуацией распространения на рынке языков программирования. Определение плюсов и минусов Pascal, C++, VBA. Сравнение и анализ синтаксиса программ на основе одной задачи. Выявление лучшего языка для освоения первоначальных навыков.
курсовая работа [1022,0 K], добавлен 13.10.2014Характеристика языков программирования: краткая история, хронология. Основные виды языков программирования: ассемблер; бейсик. Создание и использование формул в Excel. Применение операторов в формулах. Использование функций в Excel. Сайт дома отдыха.
отчет по практике [139,1 K], добавлен 03.06.2011Обзор основных используемых языков программирования (С++, Java, Pascal). Анализ существующих методов шифрования паролей. Основные понятия объектно-ориентированного программирования. Реализация приложения для генерирования паролей на языке Object Pascal.
курсовая работа [822,4 K], добавлен 07.07.2012Понятия языка программирования, разновидности и характеристика языков. Исторический обзор их создания и применения. Классификация, примеры использования. Характеристики языков программирования с точки зрения элементов объектной модели, их популярность.
реферат [463,6 K], добавлен 07.09.2009