Pythonin nopeus?

numeronäyttö

Mahtaisko pythonissa riittää nopeus tulkkaavana kielenä, jos sillä kirjottais ohjelman joka tulostaa sarjaportista (usb) 115200 baudin nopeudella tulevaa dataa näyttöön suurin merkein eli grafiikkatilassa. Tkinter kirjastosta ilmeisesti löytyy isot merkit. Tarkoituksena olisi saada mittauslaitteen dataa isommalle näytölle ja ehkä myös tallennus csv-muotoon. Vai kannattaako heti tyrmätä ajatus. Ohjelmointikokemus kun on vuosien takaa pascalilla dossille. C:llä tietenkin onnistuu mutta taitaa olla suuritöinen tuo grafiikkapuoli.

7

164

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • jaapajaa

      Kokeilemallahan tuo Pythonin nopeus selviää. C:llekin on valmiita grafiikkakirjastoja, joten ei se grafiikan tekeminen ole välttämättä suuritöistä.

    • Delphikoodaaja

      Jos kerran itselläsi on jo kokemusta pascalista MS-DOSissa, mikset hyödyntäisi olemassaolevaa pascal -osaamistasi, ja samalla opettelisit hieman uutta.

      Eli: käytä Delphiä (tai, jos hinnoittelu ei miellytä, silloin valintasi voisi olla FreePascal/Lazarus).

      Delphistä joudut maksamaan, mutta se on sellaisenaan toimiva ja hyvin suunniteltu.

      FreePascal/Lazarus on ilmainen, avointa lähdekoodia, mutta viimeistely ja debuggeri ovat surkeita verrattuna Delphiin.

      Ensinnäkin: jo asennusvaiheessa Lazarus vaatii valtavan määrän riippuvuuksia asennetuksi ennen Lazaruksen asennusta, jos yksikin puuttuu, asennus epäonnistuu.

      Toiseksi: Jos saat lazaruksen asennettua, niin joku polkunimi pitää käsin asettaa jotta tuote toimisi oikein. Ja jos asetat sen väärin tai jätät asettamatta, lazarus ei toimi.

      Dokumenteissa asiasta ei ole kunnollista kuvausta, vaan lazaruksen tekijät jättävät sinut:

      a) arvailemaan

      b) yrittämään etsiä tietoa netistä

      c) kysyä jollain lazarus- forumilla/chatissa asiasta. (jos käytät linuxia, asenna XChat)

      Eli tässäkin rahalla saa paremman, ilmaisen käyttäjä joutuu käyttämään aikaansa paljon ja pähkäilemään asian kanssa, ennen kuin saat lazarusta edes toimimaan.

      Lisäksi:

      JOS käytät lazarusta/FreePascalia, laita tällaisia lähdekoodiisi:

      {$MODE DELPHI}

      {$ASMMODE INTEL} (tarpeen vain, jos käytät asm - end -rakennetta)


      Sekä Delphissä että FreePascalissa kieli on Objectpascal, ei pascal.

      Objectpascalin suhde pascaliin on suunnilleen sama kuin C :n suhde C:hen.

      Eli vanhasta pascal -osaamisestasi on hyötyä, mutta luokat joudut opettelemaan uutena asiana - osaavalle koodaajalle asia ei kuitenkaan ole mitenkään kohtuuttoman vaikea omaksua.

      Delphillä käännetyn ohjelman nopeus on samaa luokkaa C tai C -ohjelman kanssa.

      Toki, jos väännät asetukset turvallisimmaksi esim. {$R } niin turvallisuuden hintana on se, että ohjelmasi toimii hieman hitaammin. Mutta onneksi nykyaikaiset prosessorit ovat niin nopeita, että tuo {$R } :n aiheuttama hidastuminen jää vähäiseksi.

      esim:

      var
      JotainTarkeaa : Longword;
      a : array[0..3] of byte;
      i : Integer;

      begin
      JotainTarkeaa := $12345678;
      i := 4;
      a[i] := 9; // tämä on vakava ohjelmointivirhe, korruptoi JotainTarkeaa -muuttujan sisällön.
      if JotainTarkeaa <> $12345678 then ShowMessage('varoitus: muistia on korruptoitu !');
      end;


      Edelläolevan jos käännät {$R-} -tilassa, ohjelma on nopea, mutta korruptoi muistia, aivan samoin kuin jos C -kielisessä ohjelmassa tekisit vastaavan ohjelmointivirheen.

      Mutta jos käännät {$R } -tilassa, ohjelma on ehkä hieman hitaampi, mutta muisti ei tällöin korruptoidu, vaan ohjelmasi saa aikaan Range Check Error.

      Siinä missä C-kielinen ohjelma sallii ohjelmoijan tehdä tuhoisia virheitä, eikä ohjelma ajonaikaisesti varoita mitenkään, niin Objectpascal antaa valinnanvapauden:

      {$R-} maksimoi nopeuden, mutta on juuri yhtä vaarallinen kuin C -kielellä tehty ohjelma.

      {$R } on turvallisempi, ja huomaa tuollaisen virheen, jossa taulukkoa yritetään käyttää sen luvallisten indeksien ulkopuolella. Luonnollisesti kääntäjän ohjelmaan lisäämät tarkistukset indeksien oikeellisuudesta kuluttavat nekin jonkun verran prosessoriaikaa ja tekevät ohjelmakoodista hieman isokokoisemman. Mutta tällöin tulee selkeä virheilmoitus sen sijaan, että ohjelma salakavalasti korruptoisi muistia.

      Delphissä on kattava on-line help, painat vain Ctrl-F1 kun editorissa kohdistin on halutun sanan kohdalla, ja Delphi itse etsii ohjeista ko. sanaan liittyvän kohdan.

      • Delphikoodaaja

        HUOM: edelläolevassa on oletettu, että muuttujat ovat paikallisia, esim:

        procedure TestaaAsia;
        var
        JotainTarkeaa : Longword;

        a : array[0..3] of byte;

        i : Integer;

        begin

        JotainTarkeaa := $12345678;

        i := 4;

        a[i] := 9; // tämä on vakava ohjelmointivirhe, korruptoi JotainTarkeaa -muuttujan sisällön.

        if JotainTarkeaa <> $12345678 then ShowMessage('varoitus: muistia on korruptoitu !');

        end;

        procedure TForm1.Button1Click(Sender:TObject);
        begin
        TestaaAsia;
        end;

        Jos muuttujat ovat globaaleja, silloin em. virhe korruptoikin muuttujan i eikä muuttujaa
        JotainTarkeaa.

        Johtuu siitä, että paikalliset muuttujat allokoidaan pinomuistista, jolloin ensimmäisenä esitelty tulee ylimpään muistiosoitteeseen.

        Sensijaan globaalit muuttujat taas allokoidaan alhaalta ylöspäin, eli ensimmäisenä esitelty tulee alimpaan muistiosoitteeseen.


    • Sellainen ajatus tulee mieleen, että mitä jos tekisi pipen, lulee dataa USB:stä ja käsittelee sitä välissä ja tulostaa sen suoraan .csv:ksi tai vaikka HTML tiedostoon taulukkoon jonka ohjaa WWW-jakoon.

      Tuo olisi suunnilleen yhden rivin juttu.

      Jotta pääsisi jyvälle niin

      cat /dev/usb | kasitteleteksti > /var/www/html/tuloste.html
      cat /dev/usb | teecsv > /var/www/html/tuloste.csv

      sed:llä muokkailee rivin pätkällä tekstimuotoista dataa, ja WWW-jako nyt käy kun asentaa sen jonkun Apachen.

      Tietysti voit millä kielellä vaan tehdä sen palikan väliin siihen putkeen joka lukee dataa sisään ja kirjoittaa dataa ulos. C käy tuohon mainiosti yksinkertaisuuden takia ja varsinkin jos pitää jotain bittejä käsitellä.

      Tämä video kohdasta 4:08 eteenpäin https://www.youtube.com/watch?v=tc4ROCJYbm0

      ..Kertoo aika hyvin miten pipet toimii ja miten käytetään.

      Sitten jos dataa pitäisi muiden katsoa niin se näkyisi kätevästi kun porukka menee selaimella http://koneenosoite/tuloste.html

      ...

      Jos nyt sitten pitäisi jotain desktop sovellusta vääntää niin Qt olisi tuohon helppo. Ei ole tuollaista monimutkaisuutta kuten Lazaruksessa tai Delphissä.

    • EnKerroJOO

      Python & QT nopeus riittää mennen tullen.
      Piirrettiin reaalliaikakäyriä 5 kappaletta ja 1000 pistettä jokaiseen sekunnissa ja scrollattiin viellä käyrät. (piirrettin vakiopaikkaan ja sitten käyrä siirrettiin 1 piste vasemmalle)

    • L_ZZ

      Olen kuullut että eräässä projektissa mietittiin riittääkö Pythonin nopeus Scripteihin. Koska silloin todettiin että FreePascal kääntää nopeammin lähdekoodeista ohjelman ja ajaa sen (missä ajassa Python ei vielä ehtinyt tulkita sitä) niin syntyi http://wiki.freepascal.org/InstantFPC

      Aloittavalle ohjelmoijalle tiedoksi että väärin valitulla algoritmillä voi olla samallaiset seuraukset (suosittelen yliopistotasoisen algoritmit-kurssia selventämään tätä asiaa)

    • LclBd-Tirehtööri

      Ihan taatusti riittää.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Purra hyökkää nyt suomalaisen duunarin kimppuun teettämällä mamuilla palkatonta työtä

      Niinpä niin. Persut duunaripuolue, HAH. Joko alkaa kovapäisinkin persu älyämään, että persut ovat Suomen kansan vastain
      Maailman menoa
      394
      12717
    2. Purra ehdottaa vaan Tanskan mallia, joka on erittäin hyvä malli

      Purra ehdotti helmikuussa Suomeen Tanskan mallia, jossa maahanmuuttajilta vaaditaan työntekoa sosiaalitukien saamiseksi.
      Maailman menoa
      273
      5591
    3. Kokoomusnuoret: Sosiaalitukien työvelvoitteen tulisi koskea kaikkia

      Riikka Purra on esittänyt, että maahanmuuttajilta tulisi edellyttää palkatonta työtä sosiaalitukien vastineeksi. Kokoom
      Maailman menoa
      240
      4135
    4. Purra vaatii: Työvelvoite maahanmuuttajille ja kantasuomalaisille pitkäaikaistyöttömille

      Jos Perussuomalaiset ja Kokoomus ovat seuraavan hallituksen kaksi johtavaa puoluetta, on suomalaisille pitkäaikaistyöttö
      Perussuomalaiset
      300
      3272
    5. Jyrki Linnankivi, Jyrki 69 - Goottirokkarista kirkonmieheksi Lappiin!

      Jyrki Linnankivi eli Jyrki 69 on The 69 Eyes -rockyhtyeen vokalisti. Lauluhommien lisäksi hän sanoittaa, säveltää ja sov
      Työ ja opiskelu
      23
      2135
    6. Onnea Maria ja Vilma Amazing Race -voitosta!

      Maria Guzenina ja Vilma Vähämaa voittivat Amazing Race Suomi -kisan. Voiton hetkellä Guzenina paljasti, miksi valitsi Vi
      Tv-sarjat
      20
      1930
    7. Juhana Vartiainen(ex-sd): Köyhien pitää tehdä jotain elämälleen säilyttääkseen tukensa

      Juhana Vartiainen ehdottaa Suomeen ”Tanskan mallia”, jossa sosiaaliturvaa saadakseen pitäisi hakea ensisijaisesti etuuks
      Maailman menoa
      95
      1737
    8. En ymmärrä näitä SDP:n ja muun vasemmiston kannattajia

      Eivätkö ihmiset tiedä, että Suomen ongelmat johtuvat vasemmistolaisesta yhteiskuntamallista? Suomessa on ollut vasemmis
      Maailman menoa
      80
      1341
    9. Mikä on mielestäsi paras miestyyppi?

      Esimerkit kärjistettyinä: a) perustavallinen/tasainen b) himourheilija c) varakas, turvallinen elättäjä d) puolikrimina
      Ikävä
      169
      1033
    10. Martina Aitolehti

      Instagramissa pomppas esille Martinan kumipallot. Ihan säikähin. Ja tää on Martina-ketju!
      Kotimaiset julkkisjuorut
      273
      965
    Aihe