Wpis z mikrobloga

Kilka pytań:
1. w czym #javascript jest lepszy niż #python?
2. czy w pythonie są biblioteki do asynchronicznego połączenia z bazą np. #mongodb?
3. jak wypada porównanie wydajności serwera http node.js do tornado, bo z tego co rozumiem to oba działają na takiej samej zasadzie?
4. jakie są możliwości przyspieszenia pythona i jak dużo one dają?

#programowanie
  • 62
  • Odpowiedz
@ufik78: Ogólnie Python i Node.js mają inną filozofię choćby na poziomie developmentu.
W Node.js napisanie rozszerzenia kompilowanego wymaga znajomości C++, API V8, skomplikowanych ustawień node-gypa.
W Pythonie można zrobić rozszerzenie dodając plik .c do katalogu i wpisując make w konsolę. Albo wpisując tworząc dwa pliki i wpisując python setup.py build.
  • Odpowiedz
@LOLWTF: A jak to działa w Pythonie, bo nie wiem, w momencie kiedy jedna osoba pisze z tabem, inna z 4 spacjami, inna z 2, a inna z 8 i to wszystko jest w jednym pliku? Takie wcięcia też czyta? Albo z pustą linijką pomiędzy blokami?
  • Odpowiedz
@ufik78: a serio uwazasz, ze takiej wydajnosci bedziesz potrzebowac? Pracowalem przy wielu projektach, w tym przy serwisie spolecznosciowym na blisko 2 mln uzytkownikow stojacym na PHP i 4 maszynach, ze nie wyobrazam sobie dlaczego mialbys przejmowac sie szybkoscia przy wyborze Python, Node, Ruby. Technologie wybiera sie glownie z powodu narzedzi (biblioteki, narzedzia do testow), dostepnosci ludzi, a pozniej preferencji zalozen jezyka. A jesli masz problem, to z reguly z mala
  • Odpowiedz
@TrochePowagi: puste linijki bez problemu. taby/4 spacje CHYBA pójdą baz problemu, ale różna liczba spacji na wcięcie zacznie się rozpieprzać. Generalnie nie ma z tym problemu, bo w zespole ustala się konwencję (najczęściej 4 spacje na wcięcie) i wystarczy odpowiednio edytor ustawić.
  • Odpowiedz
@ufik78: o jak ja uwielbiam to pieprzenie o wydajnosci jezykow. Uwielbiam jak sie eksperci wypowiadaja o szybkosci, pisza gownokod a potem debatuja, czy a+b jest szybsze niz a-(-b) bo dwie intrukcje mikrokodu szybciej.
Tak jak pisal @LOLWTF

nigdy nie miałem problemów związanych z wydajnością. A jeśli robisz super #!$%@? zaawansowane rzeczy wymagające #!$%@? szybkości, to sobie zrobisz pythona tak, żeby działał szybko.


Jak NAPRAWDE potrzebujesz super-wydajnosci to robisz rzeczy
  • Odpowiedz
@Ginden: wiem, czytałem właśnie jakiś czas temu jak się pisze moduły do node.js i też zwróciłem na to uwagę.

@silver_spike: tak, node.js jest modny. Tak, trzeba znać JS więcej niż na poziomie używania jQuery aby pisać w node.js. Zadałem pytanie odnośnie wydajności, nie dlatego, że jej teraz potrzebuje, lecz dlatego, że problemy z wydajnością zawsze się pojawiają, wcześniej czy później. Swego czasu robiło się startupy w RoR a później przepisywało na coś bardziej wydajnego. Jednak bardziej ciekawiło mnie to, że teoretycznie node.js i python niczym się nie różnią (tak, wiem, że nie do końca mogę to tak porównywać, lecz to taki skrót myślowy), oba nie są statycznie typowane, oba są interpretowane, a jednak wydajność node.js jednak jest większa. Wytłumaczono mi już powyżej (nawet obrazkowo), że całą robotę odwala V8 i że pythona też da się zoptymalizować i to informację których szukałem. A dlaczego w ogóle o tym myślę? Bo wydaje mi się, że jeśli chce się robić ambitne rzeczy to nie można nie myśleć o wydajność, nawet gdy jej nie potrzebuje to staram się jednak pisać kod w taki sposób aby działał optymalnie, bo wszystko da się spieprzyć, ja wolę mieć świadomość, wiedzę co mogę osiągnąć a kiedy pora szukać innych rozwiązań.

@edgar_k: nie wiem czy mogę dodać coś więcej do tego co napisałem w odpowiedzi do @silver_spike. Tu nie chodzi o pieprzenie o wydajności. Chodzi o znajomość potencjału. Napiszesz czat obsługujący 400 ludzi w PHPie? Nie. Będziesz pisał serwer, który będzie serwował styczne strony HTML w C? Nie. I tak jak napisałem, wiem, że wszystko można źle napisać. Aha i tak, używałem profilera. Ogólnie nie lubię takiego podejścia w stylu, pieprzyć wydajność dokupi się serwerów w razie potrzeby. Czy to źle, że interesuję się wydajnością? Nie chodzi o małe skoki, ale jak coś jest o dwa rzędy wielkości wolniejsze to już wydaje mi się, że
  • Odpowiedz
Ogólnie nie lubię takiego podejścia w stylu, pieprzyć wydajność dokupi się serwerów w razie potrzeby. Czy to źle, że interesuję się wydajnością? Nie chodzi o małe skoki, ale jak coś jest o dwa rzędy wielkości wolniejsze to już wydaje mi się, że trzeba się chyba zastanowić co się robi.


@ufik78: a kto mowi, ze pieprzyc? Problemem wydajnosci PHP nie jest sam jezyk, a to jak jest obslugiwany - ba, pare sztuczek i zasuwa jak cholera - masz rozne zendy i inne cache-acceleratory. A jezyk dalej ten sam.

Zle, ze interesujesz sie wydajnoscia tam gdzie nie trzeba. Wydajnosc w "typowych" aplikacjach webowych to w 90% baza, Ale nie zawsze - dlatego pieprzenie o wydajnosci jezyka jest bez sensu bez twardych danych.
Jak planujesz naprawde duzo obciazenie i robisz to na powaznie - a nie jak gimnazjalista zakladasz 100 milionow wejsc na bloga na sekunde - to stac cie na ludzi ktorzy zajmuja sie
  • Odpowiedz
@ufik78: ale wiesz, ze przepisywało się projekty w stylu Facebooka? ;)

W RoR działa chociażby airbnb czy github, sam prowadze projekt, który ma kilkaset tysięcy transakcji miesięcznie i nie ma problemu z wydajnością.

Problemy z wydajnością to mają topowe startupy i one muszą przepisywać - pozostałe problemy to jak wspomniał @edgar_k baza czy inne zasoby - na mocnym dedyku, jesli wykorzystasz cache i przeniesiesz akcje do sidekiqa obsłużysz spokojnie
  • Odpowiedz
ale wiesz, ze przepisywało się projekty w stylu Facebooka? ;)


@silver_spike: tylko dodam, ze warto zauwazyc, KIEDY FB postanowil sie przepisa. To samo PayPal i inne serwisy :) W skrocie - najpierw mieli problem (wydajnosc), potem go rozwiazali (przepisali), bo zapewne tak wynikalo z doglebnej analizy.
Nie wierze, by zaczynali od sprawdzania, ktora technologia pociagnie miliardy transakcji czy ile tam robi PP.
  • Odpowiedz
@edgar_k: ok po kolei

jak wypada porównanie wydajności serwera http node.js do tornado

gdzie tu porównuję języki?

jakie są możliwości przyspieszenia pythona i jak dużo
  • Odpowiedz
@ufik78: ja na Tobie nie siadłem, wyraziłem swoje zdanie kulturalnie, masz do wszystkiego prawo. Dane z RoR czy Pythona wrócą na tyle szybko, że loader nie będzie potrzebny ;)

Ale pozwól mi mieć swoje zdanie. To dyskusja, jeśli nie chcesz głosów odmiennych to napisz proszę na przyszłość zadając pytanie, że sobie ich nie życzysz ;)

Ale przepisuje się projekty w finalnej fazie wzrostu jeśli już, wielkości Facebook-a. A projekty z większą ilością logiki napisane w node i nawet którymś z nowoczesnych frameworków to, no cóż, narzut na utrzymanie tego i jakikolwiek rozwój przekroczy koszt kilkudziesięciu serwerów najmniej
  • Odpowiedz
@silver_spike: nie no spoko, jasne. Miło wysłuchać różnych argumentów. Odniosłem jednak takie wrażenie (może mylne), że robię coś złego interesując się wydajnością.

Tak zgadza się, że przepisuje się zazwyczaj w końcowej fazie, ale nie zawsze. Często problemy pojawiają się dużo wcześniej. Może nastąpić sytuacja, gdy koszty utrzymania serwerów będą równe z przychodami, albo inaczej będą stanowiły sporą część przychodu. Wtedy redukcja ilości potrzebnych serwerów przyniesie wymierne korzyści, a zaoszczędzone pieniądze
  • Odpowiedz
@ufik78: na szczęście się zgadzamy :) Nie należę do osób, które narzucają komuś zdanie lub walczą w internecie, za stary już na to jestem :)

Masz racje, wybór technologii jest kluczowy, szkoda, że często następuje pod wpływem hype'u. Bo przecież teraz już ludzie wybierają zamiast Node - Go, Rust czy jeszcze jeden, który ma być RoR killer, ale aż zapomniałem nazwy ;)
  • Odpowiedz