Как написать веб сервис на паскале?

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: Как написать веб сервис на паскале?

Сообщение vitaly_l » 30.05.2017 10:51:48

azsx писал(а):Как вы добиваетесь, что у вас js работает также быстро как fpc?

Я не знаю что конкретно делал Cheb, но все в один голос говорят, что JS иногда обгоняет С++. Или чистая java обгоняет С++, т.к. делали тесты.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как написать веб сервис на паскале?

Сообщение azsx » 30.05.2017 11:16:41

но все в один голос говорят, что JS иногда обгоняет С++. Или чистая java обгоняет С++, т.к. делали тесты.

Врут!
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Как написать веб сервис на паскале?

Сообщение vitaly_l » 30.05.2017 11:36:02

azsx писал(а):Врут!

Я не знаю, люди всякие цифры приводят(я не тестил). Кстати где-то здесь на форуме это читал. Но может быть и врут.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как написать веб сервис на паскале?

Сообщение azsx » 30.05.2017 12:42:50

Я малокомпетентен в этом вопросе, но компетентные специалисты чаще всего такие вопросы целиком игнорят. Напишу, чтобы меня поправили. Как известно программы крайне редко упираются в производительность процессора или оперативной, чаще в ресурсы диска и сети. Разберём только основные: процессор, оперативная память, ввод вывод (в том числе БД), сеть.
Сеть 1 гб - 128 мбайт + 30% у них всякие расходы.
Ввод вывод, hdd - 100-150 мбайт, ssd -- 300-500 мбайт, БД в зависимости от настоек, если сервер как самолёт и всё закешировано - то может очень быстро, но обычно наоброт всё и так медленно, да ещё и данные поступают по локальной сети.
Отдельно стоят память и процессор. Далеко не всегда удаётся забить всю оперативку своей задачей, далеко не всегда вы даже близко упираетесь в процессор. Тем не менее многие жалуются, что джава с трудом юзает более 8 гб оперативной; в теме пишут, что php совсем плох с большими объемами памяти. В то же время С++ и fpc съест сколько дадут. Также важно идёт обработка цифр или строк. Хотя всё в компьютере 0 и 1, однако реализация в разных ЯП обработки строк разная. Например, в java можно создать string, а можно buildstring, который в 30 раз быстрее! В 30 раз Виталий!
Теперь мои мысли.
Пока наш алгоритм берёт данные из сети или диска, делает с ними не сложную обработку и снова выгружает на диск -- выбор ЯП для производительности не имеет смысла. Все ЯП на 3 ггц процессоре будут работать очень быстро.
Допустим, мы берём данные из оперативной и кладём после сложной обработки обратно в оперативную (работает очень быстро). Вот тут вопрос, кто и как писал алгоритм? В пхп специалисты написали функции, уверен, что любая функция по отдельности будет работать гораздо быстрее, чем перепишу я на С++ и даже на чистом С. Это не значит, что пхп быстр, это я тормоз :) java убила кучу человеко лет, чтобы оптимизировать компиляцию в виртуальной машине, для некоторых расчётных задач незаметно для кодера на джава программа оптимизирует себя под конкретный процессор. Такое же можно сделать на С++, но пойди сперва сделай. В то же время С++ под числодробилку может юзать видеокарту или опции компиляции, опять же, сколько угодно оперативной. Джава и обработка строк -- это ужасно как по мне.
Реальных задач, которые могут упираться именно в процессор я просто не знаю.
Как вывод у такого программиста как я программа на джава будет работать быстрее чем на С. Несмотря на это даже думать, что программа на компилируемом языке может быть медленнее, чем программа на скриптах или запущенная в виртуальной машине -- это грань какого то безумия.
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Как написать веб сервис на паскале?

Сообщение vitaly_l » 30.05.2017 12:55:40

azsx писал(а):php совсем плох с большими объемами памяти

Это правда, начиная с данными около ГИГАБАЙТА и выше, в пхп начинаются проблемы и вылеты. Но php и не рассчитан на такие громадные объёмы при работе с клиентом. Если пхп отправляет клиенту один мегабайт, то это уже много.
azsx писал(а):В то же время С++ и fpc съест сколько дадут.

Ну они всё таки, не скрипты, соответственно и возможности другие.
azsx писал(а):в java можно создать string, а можно buildstring, который в 30 раз быстрее! В 30 раз Виталий!

Кстати, спасибо! Z не знал про buildstring :oops:. Но увы, не могу найти инфу. Где узнать про buildstring в JS?
azsx писал(а):Как вывод у такого программиста как я программа на джава будет работать быстрее чем на С. Несмотря на это даже думать, что программа на компилируемом языке может быть медленнее, чем программа на скриптах или запущенная в виртуальной машине -- это грань какого то безумия.

Честно говоря я верю в, то, что скрипты оптимизированы и дают 100% совпадение по скорости. Более того, видел на семинаре графики производителей скриптов работающих в интел. правда для питона.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как написать веб сервис на паскале?

Сообщение azsx » 30.05.2017 13:09:28

не знал про buildstring

String, StringBuffer, StringBuilder
Более того, видел на семинаре графики производителей скриптов работающих в интел. правда для питона.

Ну как этот бред может быть правдой?
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Как написать веб сервис на паскале?

Сообщение vitaly_l » 30.05.2017 13:13:43

azsx писал(а):Ну как этот бред может быть правдой?

Там выступали официальные программисты из интел. И они приводили графики. В 70% графики показывали результат равный С++ по скорости, для выбранных тестовых операций. Например 1 000 000 000 сложений, вычитаний или умножений и делений. Там же они делали тесты при работе с матрицами и со строками. Но опять таки это было для питона который выпускает интел. (как выяснилось питонов несколько)
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как написать веб сервис на паскале?

Сообщение Mirage » 30.05.2017 14:08:25

azsx писал(а):Например, в java можно создать string, а можно buildstring, который в 30 раз быстрее


Ну, не buildstring, не в 30 и не быстрее (обычно), а так все верно.:)

azsx писал(а):Несмотря на это даже думать, что программа на компилируемом языке может быть медленнее, чем программа на скриптах или запущенная в виртуальной машине -- это грань какого то безумия.


И что интересно, когда всплывает очередная тема "почему вот это на Java и даже JS!!! быстрее чем на FPC", то таких вот неверующих с форума как корова языком слизывает. Нет чтоб показать где собака зарыта.
Недавно такая тема тут про рейтрейсер была.

А производительность может много где упираться в CPU. Хорошо, когда кроме сортировки/группировки данных ничего не нужно. Но если нужен анализ, свертки, кластеризация и т.п. Короче, если нужно обрабатывать данные, либо просто каждая миллисекунда на счету, как при высокочастотной торговле, например, то оптимизация важна.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Как написать веб сервис на паскале?

Сообщение azsx » 30.05.2017 14:22:50

Например 1 000 000 000 сложений, вычитаний или умножений и делений.

Прежде всего давайте вдумаемся, как мало в мире задач для которых надо последовательно сложить одно число 1 млрд раз. Так как если чисел более 1000 то гораздо правильнее загружать его в видеокарту и получать результат сразу для тысячи чисел.
Теперь мысль. Мы запускаем интепритатор питона (написан на С), который для ускорения берёт уже байт код и выполняет его. При этом интепретатор -- это программа, он имеет ограничения + добавляет ограничений своему байт коду. Например, интепретатор сам по себе занимает память, требует обработки своего процесса в фоне и прочее. Допутим,
for i = 1 to 10 do
a = a + i
next i
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 == (10*11)/2 == 55
То есть если этих циферок i миллиард, то интепретатор может просто посчитать по второй формуле, порвав С, видеокарту и прочее. На паскале вам также никто не мешает по второй формуле считать, только не считаем.
Также интепретатор может использовать инструкции процессора, например, деление. Вы также можете скомпилировать С под эти инструкции, но не компилируете.
Но как программа exe может быть медленнее скрипта -- я просто не понимаю.
---
Вы пишите, они провели тесты. Они молодцы. Зачем весь мир понадобилось пересадить на jvm и pyton для меня загадка. Я занимаюсь сайтами, читаю и уверяю вас в рекламу этих технологий вбухивается немеряно.

Добавлено спустя 8 минут 58 секунд:
Ну, не buildstring, не в 30 и не быстрее (обычно), а так все верно

Дядька врёт?
https://www.youtube.com/watch?v=SZFe3m1DV1A
Недавно такая тема тут про рейтрейсер была.

Темы не видел, зачем что то тестировать тем более сравнивая с кем то не понимаю.
если нужно обрабатывать данные, либо просто каждая миллисекунда на счету, как при высокочастотной торговле

Ну реально. Они проверяют как меняется время отклика если сетевой кабель физически уменьшить на пол метра; они проверяют как меняется производительность на горячей и холодной банке памяти соответственно работают с ними; они все сидят на С -- им предлагать java как производительное решение?
Другой вопрос, что реклама сделала своё дело, за делфи платят 10-50, за js и java (специалистам) платят от 100 до 300 в РФ.
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Как написать веб сервис на паскале?

Сообщение vitaly_l » 30.05.2017 14:41:45

azsx писал(а):Но как программа exe может быть медленнее скрипта -- я просто не понимаю.

В интеле, есть свой питон. Он у них оптимизирован под процессоры интел, но будет работать и на других процессорах. И видимо в ИХ питоне есть какие-то оптимизации для этих процессоров, которые позволяют скриптам работать наравне с С++. Там кстати не только с, С++ сравнивали. И задачи там не только на сложение были, я просто привёл первый пришедший пример, а там было предъявлено порядка 25 тестов, на различные операции.

Но в некоторых операциях(тестах), скорость скриптов, действительно очень резко падала в 2 и даже в три раза.

:!: Кстати, последний процессор интел, считает уже без плавающей точки. Соответственно, проблема вычислений 0.01 на последнем процессоре отсутствует. Это я про вот эту тему: viewtopic.php?f=1&t=19819

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как написать веб сервис на паскале?

Сообщение azsx » 30.05.2017 14:55:21

Но в некоторых операциях(тестах), скорость скриптов, действительно очень резко падала в 2 и даже в три раза.

Так я пишу о том же. Я как программист должен считать не 1+2+...+9+10, а (10*11)/2. Но я растяпа, на С буду считать последовательно, а они в интеле умные и в интепретатор вставят правильный алгоритм, который порвёт все языки. Тем не менее, когда алгоритма нет вшитого в интепретатор будет реальная скорость питона (когда внутри одной программы запустили другую программу).
Но ваще мне питон не нравится совсем.
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

Re: Как написать веб сервис на паскале?

Сообщение vitaly_l » 30.05.2017 15:07:16

azsx писал(а):Но ваще мне питон не нравится совсем

Мне нравится программа: blender 3D - она написана на питоне. Рендерит она может быть и дольше, чем программы на С++ или Паскале, но программа крута.

Кстати, помнится: вы хотели писать программу по вечерам? Вот возьмите сделайте аналог: blender 3D на Паскале, заодно сравним по скорости рендера. Код питона открытый, так что, можно его оптимизировать и сделать 3D редактор на паскале, который будет ещё круче, чем блендер. Если грамотно сделаете, то программа 100% будет востребована, т.к. хороший 3D - долго ещё будет нужен. Дополните его выводом в HTML и все веб-дизайнеры будут ваши поклонники!
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Как написать веб сервис на паскале?

Сообщение Mirage » 30.05.2017 16:43:41

azsx писал(а):Дядька врёт?


Этот точно не врет. Просто внимательнее слушать надо.
Дядька показывает пример плохого кода. Он не показывает то, насколько конкатенация строк через "+" медленнее ее же через StringBuilder. Кстати, конкатенация через "+" использует StringBuilder.
В 30 раз быстрее получается 1000 раз сложить строки, вынеся создание StringBuilder за цикл.

azsx писал(а):Темы не видел, зачем что то тестировать тем более сравнивая с кем то не понимаю.


Ну, просто говорить, конечно, безопаснее. Но с тестами и цифрами оно информативнее получается.
А тема вот она:
viewtopic.php?f=1&t=15978&p=109834

azsx писал(а):Ну реально. Они проверяют как меняется время отклика если сетевой кабель физически уменьшить на пол метра; они проверяют как меняется производительность на горячей и холодной банке памяти соответственно работают с ними; они все сидят на С -- им предлагать java как производительное решение?


Сервера располагают ближе к серверам биржи, да, т.к. это имеет значение. Насчет температуры банок не уверен что влияет как-то. :D
Что касается сидения на C, то пишут такие системы и на Java, т.к. баги, когда ворочаешь миллиардами, тоже могут зарешать. :D
А многопоточные приложения даже на Java писать сложно.

vitaly_l писал(а):blender 3D - она написана на питоне


Почему хотя бы минимально не проверять информацию, прежде чем писать? Вдруг понравится?
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Как написать веб сервис на паскале?

Сообщение Лекс Айрин » 30.05.2017 16:51:59

vitaly_l писал(а):Мне нравится программа: blender 3D - она написана на питоне.


Она НЕ написана на питоне. Питон лишь язык внутренних скриптов. Ядро написано на С/С++
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Как написать веб сервис на паскале?

Сообщение vitaly_l » 30.05.2017 16:56:09

Mirage писал(а):Почему хотя бы минимально не проверять информацию

Ну там есть какие-то вкрапления С и С++, но они минимальны, т.к. весь интерфейс там дополняется на питоне, и кстати, любые плагины и модификаторы там дописываются на питоне, а это и есть по сути вся программа. Так вот если заглянуть в её исходники, то можно увидеть, что любую часть блендера, можно изменить в скриптах которые к нему прилагаются. Какую именно роль в этом всём играют С и С++, я не знаю. Возможно что, С и С++ нужны для установки и работы питона. Но сама программа вся из скриптов на питоне: https://ru.wikipedia.org/wiki/Blender.
Лекс Айрин писал(а):Питон лишь язык внутренних скриптов. Ядро написано на С/С++

Я не знаю что вы подразумеваете под словом ядро. Но все элементы и модификаторы, а равно и обработчики - лежат в теле программы и они на питоне. Как функции рендера так и функции интерфейса. Там 99% кода программы - скрипты питона, занимают 150 мегабайт. Правда и сам файл exe большой, 90 метров. Но скорее всего exe нужен для запуска и работы питона.
Последний раз редактировалось vitaly_l 30.05.2017 17:03:00, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Пред.След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

Рейтинг@Mail.ru