LINUX.ORG.RU
Ответ на: комментарий от Deleted

Да, у меня пригорает, когда макаки, осилившие только Пихтон, лезут с ним к нам в embedded.

А потом макаки, не способные осилить ничего, кроме Си, лезут в хайлоад на цпп.

oldstable
()

Хочу понять кричащих: «python тормоз»

Проблема в том, что вышеозначенные личности пытаются носить чайник на голове, а в шапке заваривать чай. Скорость — не предназначение питона. Питон — это мощный и удобный язык. Его нужно использовать, когда скорость некритична, и выполнять критичные участки кода на Си/C++. Если важно, чтобы микрокалькулятор мог выполнить твою программу быстрее, чем свет в вакууме успеет пройти полметра, нужно использовать Си. Для кождой задачи свой инструмент. Си быстрый и простой язык, он был создан СПЕЦИАЛЬНО для системного программирования. Питон расчитан на научные расчеты и прикладное программирование, а так же может служить альтернативой башу в написании скриптов для нужд администрирования. Срач между адептами Си и Питона лишен здравого смысла. У каждого инструмента своя функция.

anti_win ★★
()
Ответ на: комментарий от dimuska139

Подойдёт, почему нет. Речь про сотни RPS, плюс зависит, конечно, от того, что конкретно оно делает при этом. Одного ядра легко может не хватить, плюс всегда нужно иметь запас на случай всплесков. Конечно, всё равно хотя бы пара независимых инстансов должна быть запущена, но ТС спрашивал не об этом. Так или иначе, странно недоутилизировать современное многоядерное железо.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Логично, но на чем тогда пилить такое API? Чтобы и быстро шла разработка, и чтобы работало оптимально в плане ресурсов? Я для себя ответ на этот вопрос не нашел, поэтому продолжаю писать на php/python + go.

dimuska139 ★★
()
Ответ на: комментарий от Zhbert

Использование нормальных, обёрнутых питоном библиотек

peregrine ★★★★★
()
Ответ на: комментарий от WitcherGeralt

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

oldstable
()
Ответ на: комментарий от dimuska139

Ну, так Go и есть, либо JS, который хоть и однопоточный, но на порядок быстрее питона, да и рой инстансов на питоне обычно ничто не мешает пускать, если время обработки запроса не критично.

Джависты ещё обязательно скажут, что есть джава, им от меня превентивное фи! А хипстоте, пишушей бек на котлине, моё неодобрение.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 3)
Ответ на: комментарий от peregrine

Как посмотреть. У меня сейчас проект горит, на педоне написан, код говно, тесты говно. Я его взял под контроль недавно и после некоторого времени на осознание глубины этой задницы, основного разраба выставили на мороз, ибо он сам в своём коде ничерта не понимал, а вреда приносил больше чем пользы. После тщетных попыток это фиксить, я плюнул и начал переписывать по частям. Большинство тестов не работает, их поддержка — отдельная эпопея, выхлоп линтеров горит как герлянда, но вся эта афхинея без толку почти, рефакторить не помогает, слишком много лишних срабатываний на ORM, в ключевые параметры развёртывается словари, про содержимое которых линтеры ничего не знают, путается порядок позиционных, где-то не понятно какого типа объект в метод пришел и прочее подобное мракобесие. Одно изменение в этом море лапши обязательно ломает что-то другое, и это что-то ты обнаружишь только в рантайме.

А всё почему? Потому, что динамика.

Написать может и быстрее, а поддерживать и рефакторить — караул.

WitcherGeralt ★★
()
Ответ на: комментарий от peregrine

Ну, в плане рефакторинга у джавы конкурентов нет, и разработка не то чтобы сильно дольше выходит. В общем-то альтернатива. Писать на этом многословном античеловечном днище — сплошные мучения, правда.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 2)
Ответ на: комментарий от WitcherGeralt

Так-то понятно, но на Go писать крайне нудно + слабоватая инфраструктура. Наглядный пример: нужно сделать API, которое ходит в Sphinx. Есть такой клиент для Go, который вообще не потокобезопасный. К тому же он устарел, о чем там и написано. Но ссылка, которая там указана в качестве альтернативы, ведет в 404. Других подобных либ не нагуглить вообще. И вот чего делать?

Насчет джавы ничего не скажу, кроме того, что офигею ее изучать, как мне кажется. Да и памяти она, вроде, жрет дохрена.

JS - норм, но только в виде TS. Единственное, что приглянулось, это NestJS.

dimuska139 ★★
()
Последнее исправление: dimuska139 (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

Ну это все болезни скриптовых языков, да. Но насчет «слишком много лишних срабатываний на ORM» - проблема чисто в разработчике. С кривыми граблями вместо рук и Hibernate джавовская наделает лишних запросов.

dimuska139 ★★
()
Ответ на: комментарий от dimuska139

Речь про срабатывания линтеров на SQLAlchemy core, а не про лишние запросы. Собственно, core и не orm, а просто модели, запросы оно само не делает. Нужно чтобы генерировать запросы для aiopg.

WitcherGeralt ★★
()
Ответ на: комментарий от anti_win

Накидал задачку такую

Найти кол-во чисел в диапазоне [a, b), которые делятся без остатка на два. На Си переписать?

import time

start = time.time()
count = 0

a = 5000
b = 100000000
for i in range(a, b):
  if i % 2 == 0:
    count += 1

print(count)

end = time.time()
print(end-start)

VolanQ
() автор топика
Ответ на: Накидал задачку такую от VolanQ

Ну, если надрачивать на скорость выполнения, то можно и заморочиться. А так, даже для относительно маломощного процессора это элементарная задача.

anti_win ★★
()
Ответ на: Накидал задачку такую от VolanQ

Действительно [a, b)? Так как твой скрипт берет [a, b].

Ну, при таком подоходе к алгоритмам, даже мой PHP рвет твои Python и C как Тузик грелку. :)


lapka$ cat a.py
import time

start = time.time()
count = 0

a = 5000
b = 100000000
for i in range(a, b):
  if i % 2 == 0:
    count += 1

print(count)

end = time.time()
print(end-start)
lapka$ time python3 a.py
49997500
9.629435300827026

real    0m9.674s
user    0m9.641s
sys     0m0.031s
lapka$ cat test.c
#include <stdio.h>

int main()
{
    int count = 0;
    for (int i = 5e3; i <= 1e8; i++) {
        if (i % 2 == 0) count ++;
    }
    printf("%d", count);
}
lapka$ gcc -Wall test.c -o test
lapka$ time ./test
49997501
real    0m0.237s
user    0m0.219s
sys     0m0.016s
lapka$ time php -r '$a = 5e3; $b = 1e8; echo (int)($b/2) - (int)(($a-1)/2); '
49997501
real    0m0.039s
user    0m0.000s
sys     0m0.031s
lapka$

anonymous
()

Да, числодробилки, юзал Cython и numba. Не увеличится. К росту числа глупых вопросов на ЛОРе.

t184256 ★★★★★
()
Ответ на: комментарий от Deleted

о том о чем ты написал про 'пыхтон' как ты выразился я привел пример большой программы на python плюс там еще tkinter, pyqt и sqlite. Вывод такой махины на экран при чем куча процедурочек крутится при всяких евентах и много циклов вложенных причем еще рисование на canvas. И все это на python довольно шустро работает. А ты не внял моему примеру вот чё.

Stremitelnyj
()
Ответ на: комментарий от Stremitelnyj

про 'пыхтон' как ты выразился

Не Пхытон, а Пихтон. Ты меня с Эдиком спутал.

tkinter, pyqt

Зачем эта вся графическая пихтонятина, когда есть самый актуальный линуксовый GTK?

sqlite

Чего? Она на Си написана, если что.

довольно шустро работает

Странное понимание шустрости у тебя.

Deleted
()
Ответ на: комментарий от anonymous

Действительно [a, b)?

Да. Как видишь, у него а ответе на 1 меньше чем в примере на c и php. Range не включает последнее число.

grem ★★★★★
()
Ответ на: комментарий от Deleted

да вы не так далеко отстоите друг от друга два сапога пара че там. Да шустро я создавал я видел. Какая разница на чем написан скуллайт если программе приходилось считывать данные из файла и записывать.

в топку твою gtk сделай на нем холст демагог.

велкам то чс.

Stremitelnyj
()
Последнее исправление: Stremitelnyj (всего исправлений: 1)
Ответ на: комментарий от grem

Range не включает последнее число.

Ой, блин. Не знал.

anonymous
()

вставлю свои пять копеек

пистон медленный, да, ну дык нужно переводить критичные участки на натив (тотже cython хотябы). но пистон охрененно удобный для написания прототипов или как обертка с логикой поверх нативных компонентов.

обычно это выглядит так - написали прототип, пропилотировали, собрали метрики, нашли узкие участки. переписали их на натив, остальное оставили на пистоне. профит.

ну и есть ряд задач, для которых он просто не подходит. каждому инструменту свое место.

дабы не быть голословным - у нас (одна из крупнейших корпораций в стране) на питоне весь МЛ. естественно с кучей низкоуровневых компонентов в критичных местах. проблем со скоростью не испытываем. нагрузки огромные, обьемы данных гигантские. уходить с пистона не собираемся, все итак хорошо ;)

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

genryRar ★★
()
Ответ на: комментарий от Deleted

к нам в embedded.

Я слышал, есть проект netduino...

Shadow ★★★★★
()
Ответ на: комментарий от tz4678

Например, есть такой проект, cantera - библиотека на C++ с дополнительным интерфейсом на python, использующим это самую библиотеку на C++. Использовать этот интерфейс намного проще и быстрее чем писать код на C++ с вызовом этой же библиотеки, особенно когда нужно оперировать списками и срезами.

grem ★★★★★
()
Ответ на: комментарий от tz4678

Ну и хорошо, если инструменты для удобства использования можно комбинировать.

grem ★★★★★
()
Ответ на: комментарий от Deleted

Оно все существует, потому что макаки существуют

В 90-х макаки занимались тем, что писали CGI-скрипты на перле. С тех пор они давно свалили на другие языки, но перл никуда не делся, просто ушла аудитория, пришедшая на волне хайпа.

annulen ★★★★★
()
Ответ на: комментарий от annulen

не все макаки писали именно CGI-скрипты, следовательно они не обязательно ушли

anonymous
()
Ответ на: комментарий от prozaik

без процессоров. ассемблер это читабельное представление машинного кода этих процессоров

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.