-
Fototrend
Új hozzászólás Aktív témák
-
pmonitor
aktív tag
válasz pmonitor #15600 üzenetére
Elkészítettem az ismétléses permutációval megvalósított Cutter kódját C-ben. Ez 3 sec-en belül végez a kódba égetett feladattal. Akit érdekel, itt megtalálja.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
sztanozs
veterán
válasz pmonitor #15594 üzenetére
Igazából senkit sem érdekel, hogy minél gyorsabban fusson valami, az érdekes, hogy az elvárt időn belül lefusson. Ha az elvárt idő 7 mp és lefut 2 mp alatt, akkor nem fogják árírni c-be vagy assy-ba, hogy 0.05 mp alatt lefusson.
Ja és sokkal valószinűbb, hogy ha 10 mp alatt futna le, akkor se keresnek másik programozási nyelvet, hanem csak egy gyorsabb implementációt ugyanarra a problémára (ha van ilyen).[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
pmonitor
aktív tag
válasz sztanozs #15602 üzenetére
Az a baj, hogy ilyen dologról való post igazából itt off topic sajnos, úgyhogy sokáig nem lehet róla nézőpontot egyeztetni. Tényleg, nem lehetne olyan topic-ot nyitni, ahol az ilyen dolgok nem off topic-nak számítanának?
Egy dolog azért fúrja az oldalam, így mégiscsak meg kell kérdeznem.
Azt mondjátok, hogy mind1, hogy 2 vagy 7 sec. alatt fut le. Az is mind1, hogy <1 perc, vagy 15 perc alatt végez valami?http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
kovisoft
őstag
válasz pmonitor #15603 üzenetére
Nem gondolnám off topicnak a témát, bármit meg lehet értelmesen vitatni, de ha valaki úgy kezdi, hogy ez meg az milyen sz@r, ezek meg azok milyen hülyék, stb, akkor azzal óhatatlanul belegázol valaki másnak a lelkébe, aztán nem győznek takarítani a modik.
Az adott feladat és a rendelkezésre álló erőforrások döntik el, hogy elfogadható-e ez a futásidő vagy nem. Sokszor elfogadható, máskor meg nem. Ha nem elfogadható, akkor valahogy gyorsítani kell a programot, és ennek többféle módja is lehetséges, nem csak a váltás egy másik programnyelvre, pláne ha több millió soros kódbázisról van szó. Első körben nyilván az ember az adott programnyelven az adott programrészt próbálja optimalizálni (pl. gyorsabb algoritmusok használata, heurisztikák beépítése, caching, párhuzamosítás, stb). Bizonyos esetekben lehet hardvert bővíteni vagy nagyobb teljesítményűre cserélni. Nyilván szóba jöhet a kódnak vagy egy részének egy másik programnyelvre való átültetése is, de mit csináljon pl. az, aki már eleve C-ben (vagy akár Assemblyben) oldotta meg a feladatot, és még így is lassú?
Aztán meg olyan is van, hogy ugyan tudnánk gyorsítani a kódon, de ez túl nagy munka lenne és sokba kerülne a cégnek vagy a megrendelőnek, és így máris elfogadhatóvá válik a hosszabb futásidő.
-
pmonitor
aktív tag
válasz kovisoft #15604 üzenetére
Nézzük az én esetemet. Nekem a kód megírása után eszembe sem jutott, hogy ennél gyorsabban is meg lehetne csinálni. Egyetemi jegyzetben szereplő algoritmus alapján készítettem el. Mert az ember mit gondol, ha egy egyetemi jegyzetben szereplő kód alapján készít el valamit? Nyilván azt, hogy legalább a "középmezőnybe" tartozó (pszeudo)kódról van szó, ha nem is sebességre optimalizált. Az igazság az, hogy a saját korlátaimba estem bele. Aztán jött "joysefke", és belinkelt 1 olyan algoritmust, amiről ránézésre látszott, hogy jóval gyorsabb. Mikor kipróbáltam, akkor ez realizálódott is. Ezért is csináltam meg az oldalamon a kódokat/teszteket a legalapvetőbb kombinatorikai feladatokra. Aztán jöttél Te, és 1 még sokkal hatékonyabb kódot adtál(amit azt hiszem magadtól írtál régebben). Egyébként én nem tudok olyan oldalról, ami különféle témájú alapvető feladatokat megoldó algoritmusokat tesztel/hasonlít össze/érdekességként említ meg. Olyan oldallal találkoztam, ami pl. rendezéseket ír meg/hasonlít össze. De az ilyen oldalon meg pl. a kombinatorikai alapvető dolgokat nem hasonlítják össze. A gúúgli igaz, hogy sok ember barátja, de sok a "salak" is benne. Ráadásul ezek több helyen is felbukkannak. És talán kijenthetjük, hogy nagyon sokat kellene google-zni, hogy megtaláljuk pl. a Te kódodat. De lehet, hogy meg sem találnánk, nem tudom. Ráadásul a 6 téma közül kettőt is megoldottál(az ismétléses és az ismétlés nélküli permutációt). Itt jut eszembe: Remélem nem gond, ha felhasználtam a kódod az oldalamon. Gondolom, ha gond lenne, akkor nem írtad volna ide. Meg ha jól tévedek, talán azért is írtál kódot, mert láthattad, hogy én is azt írtam. De sztem 1 ilyen oldalt nem nekem illett volna elindítani, hanem tényleg egy szakinak.
Egyébként nem tudom, hogy miért olyan nagy gond egyeseknek(vagy többeknek), hogy a tényt leírom: hogy a C gyorsabb, mint a C#? Más is kiállt a C mellett, de ővele még sincs bajuk. Egyébként a standard C++ is lassabb a C-nél. Legalábbis, ha C++ protokolljait/konvencióit betartjuk. Mondjuk az biztos, hogy a C/C++ tanulási görbéje jóval laposabb, mint a C#-é. Mondjuk nekem a "szokásos" nyelvek közül igazán mind1, hogy miben van az algoritmus. A quicksort kódját pl. VB6-ból vettem át. Ha jól tudom innen. De ettől függetlenül azért a jó algoritmust írók többsége C/C++ programozó. Látod itt is Te írtál jó algoritmust, mint aki C-vel asm-el foglalkozol(szerintem).
Valaki azt hiszem említette, hogy miért a "Dos"-hoz hasonlító console alkalmazásokat írok? Mert szerintem algoritmusok/példakódok/tesztek írásához a legideálisabb. Erről jut eszembe. A C-beli printf() is gyorsabb, mint a C++ cout-ja. Na de mind1. Kicsit most hosszabbra sikerült a dolog. De azért a mondanivalóm talán átment.http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
martonx
veterán
válasz pmonitor #15603 üzenetére
Nem off topik ez. Csak egyszerűen nem kell butaságokat írni. Annak, hogy egy programnyelv jó-e vagy rossz, egy csomó szempontja lehet, nem csak a futásidőben nyújtott teljesítmény. Hiszen, ha így lenne, akkor nem lenne feljövőben a Python, a PHP már vagy egy évtizede ki kellett volna, hogy haljon, a javascriptről nem is beszélve
Ugyanakkor nyilván azt se lehet kijelenteni, hogy nem számít a futásidejű teljesítmény, mert igenis van sok olyan eset, amikor meg erre kell kihegyezni valamit. De ekkor is több mindent figyelembe kell venni. Pl. van-e értelme natív nyelvben újraírni valamit, csak azért, hogy pár százalék gyorsulást hozzon a konyhára? Vagy inkább egyszerűbb egy szerver alá betolni plusz két processzormagot, és a fejlesztők meg a hónapokig / évekig tartó újraírás (nem is beszélve egy új nyelv megtanulásáról) helyett inkább olyan új feature-ökön dolgozhatnának, amikkel megtöbbszörözik a cég bevételeit?
Vagy említetted, hogy pl. elég csak a teljesítmény kritikus részeket megírni natív kódban, és azokat dll-ként behivatkozni. Ekkor vajon mennyire fog jól működni a közös logolás, monitoring? Mennyire lesz fájdalmas CI/CD rendszert több repository-ból kiindulva felépíteni, és egy sikeres build/deploy/testing fázist végig verni az X féle nyelven készült komponensken? Mekkora szopás van ebben az esetben, ha akár csak egy szerver frissítéskor eltörik valamelyik ilyen "külső" komponens? Netán linuxról windowsra váltanak vagy vissza? Vagy csak 32-ről 64 bitre? És máris cseszhetik a dll komponensüket. Ráadásul mi van, ha az a kolléga már nincs is a cégnél, aki ezt anno készítette?
És még hosszasan lehetne sorolni a kismillió szempontot, amiket fejlesztéskor számításba kell venni. Ahelyett, hogy csak az lebegne a fejlesztők szeme előtt, hogy hú, használjuk pont azt a nyelvet, amivel most éppen 50% teljesítmény növekedést lehetne elérni.Én is dolgoztam olyan projekten, ahol a futásidő kritikus volt. Nálunk C# projektnél az volt a mondás, hogy 5 másodperc alatt kell kiszolgálni egy HTTP requestet (kellemesen bonyolult háttér logikákat futtatva több millió adatsoron), mert az előző PHP-s csapat ezt se tudta felülről még csak megközelíteni se. Nálunk ez végül 40-80ms között szórt. Vajon elégedettebb lett volna-e a megrendelőnk, ha mindezt C-ben oldja meg egy másik csapat mondjuk négyszer ennyi fejlesztési időből, és a végén 30-60ms a requestek válaszideje? Miközben ő csak annyit akart, hogy 5 másodpercen belül menjenek a válaszok.
Szóval a világ korántsem olyan fekete-fehér, mint ahogy te látod.
Én kérek elnézést!
-
MODERÁTOR
PHP szerintem egy teljesen jó nyelv csak sokan nem értenek hozzá. Mi volt régen? Nem tudsz programozni és elmentél webfejlesztőnek.
Csak nézzünk megy egy Laravel keretrendszert... Szerintem a kolléga által felvázolt probléma forrása nem a PHP volt hanem a hozzá nem értés.
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
-
Ispy
veterán
válasz martonx #15606 üzenetére
Persze lehet írni fosch kódokat, amik nagyon szarok, de azért manapság már inkább a hw az ami a szűk keresztmetszet, de olcsóbb ízomból áttolni a kódokat a vason, mint c-ben nekiállni fejleszteni.
A c ha jól tudom eléggé hw közeli nyelv, szóval szerintem inkább ott használják, ahol az oprendszer alatt kell dolgozni, a többiek meg bedurrantják a keretrendszert, azt majd a többit intézi az operációs rendszer, ami így nyilván lassabb lesz.
Igaz pont most van egy régi ügyfelünk, havi milliárdos bevétellel, aztán amikor a kimutatás 30 percig futott felvetettem, hogy milenne, ha 2021-ben a szerverükön (amin fut a raktártól kezdve minden szar) kicserélnék a HDD-t SSD-re, meg nem futtnának backupk a háttérben meg mittudomén mik, hát nem mert drága. Jó, hát akkor 30 perc.
"Debugging is like being the detective in a crime movie where you're also the murderer."
-
Ispy
veterán
Nekem nem volt vele bajom, igaz csak faék használtam 1 hónapig, de végül a serverless miatt elmentük js-re, meg akkor már az androidon is flutter, most meg már szólt a főnököm, hogy megyünk web vonalra erősen, ott meg react. C-ről nem volt szó.
Nagyon izgi, amikor az ember párhuzamosan programozik SQL-ben, JS-ben, VB.NET-ben, backend, frontend, majd most jön a react, a mobilt szerencsére nem nekem kell csinálni.
Laravell az nekünk nem jött be, pedig azzal is küzdöttünk.
[ Szerkesztve ]
"Debugging is like being the detective in a crime movie where you're also the murderer."
-
pmonitor
aktív tag
válasz martonx #15606 üzenetére
Nagyrészt igazakat írsz. De pl. 1 C csapat sem biztos, hogy olyan lassú, mint ahogy azt írod. Ha én csinálnám C-ben, akkor biztos. De azt is figyelembe kell venni, hogy a C-seknek is van egy csomó előre megírt kódjuk. Hogy mást ne mondjak, itt van kovisoft esete. Ő sem most írta meg a kódját, hanem a tarsolyában volt. Tehát a C-sek sem nulláról írnának meg minden kódot. Szóval lehet, hogy mégsem lenne annyival hosszabb idő a fejlesztés. És szerintetek a webalkalmazás miben íródott/íródik? Ha jól tudom C++-ban. De javítsatok ki, ha tévedek. De mindenképp kap legalább egy réteget fölé. Sztem ez lassítja le ezeket.
Azért egy linux/windows váltás, vagy 32/64 bites áttérés bármelyik nyelvet "megvisel"(pl. a C# mehet a levesbe linux esetén) Bár ha jól tudom, arra is van C#, de az aztán korántsem olyan elterjedt.[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
Silεncε
őstag
válasz pmonitor #15613 üzenetére
És szerintetek a webalkalmazás miben íródott/íródik? Ha jól tudom C++-ban
Én itt érteni vélem, mire gondolsz, de akkor ennyi erővel mondhatjuk, hogy minden alkalmazás, ami oprendszer felett fut, C program és készen vagyunk.
(pl. a C# mehet a levesbe linux esetén) Bár ha jól tudom, arra is van C#, de az aztán korántsem olyan elterjedt.
A .Net Core (illetve mostmár csak simán .Net) igen elterjedt cucc, sokan használják productionben is
-
martonx
veterán
A probléma nem elsősorban a PHP volt. Nyilván PHP - vél is simán le lehetett volna menni 5s alá, ha nem is 40-80ms-re.
Én mindenféle script nyelvet szeretek. Tök gyorsan össze lehet bennük dobni egyszerűbb cuccokat.
Viszont az az általános tapasztalatom, hogy sok script junkie nem véletlenül marad a script nyelveknél, hanem a képességeik a gyorsan összedobjunk valamit, valami egyszerű nyelven szinten meg is áll.
Ez nem a script nyelvek hibája, és vannak persze kivételek.Én kérek elnézést!
-
Livius
őstag
válasz pmonitor #15613 üzenetére
Ezért mondom hogy menj el dolgozni, mert látszik hogy nem látod mi a helyzet a jelenlegi technológiákban! C-ben az programozgat aki Linux-ban HW közeli dolgokat csinál, aki ott userspace dolgokat csinál az is már jobban jár a C++-val Linuxon. Vagy C-ben az programozgat, aki mikrokontrollereket használ. Ha nagyon fontos a sebesség desktop gépen, akkor C++ kell, vagy pl Windows 10 driver C++-ban ajánlott, ha még GUI is kell akkor vagy lehet maradni a C++-nál, vagy tovább kell lépni C#-ra (ma már mindenhez kell GUI, konzol alkalmazás nem eladható). A scriptnyelvek pedig gyors kipróbálásokra jók, vagy épp valami webes háttér feladatokra, amik ilyen mappákból másolgatunk ezt azt ide-oda, meg szöveges dolgokban keresünk pl. Ez a mostani trend, fogadd el. Ha a C a mindened, akkor kezdj el nézelődni a Linux kernel programozás terén, vagy mikrokontroller programozás terén, ott tényleg számít minden ms, ez való neked.
És egy C csapat igen is lassú, amint követelménybe kapja hogy legyen GUI, webes interface meg ilyesmi, már +1 év fejlesztés.
Előre megírt dolgok meg nehogy azt hidd hogy nagyon vannak, max a régi dolgokat copy-pastje van általában, de ez is kis mértékben.
[ Szerkesztve ]
Gigabyte GA-Z170-D3H, Intel Core i7-7700K, Corsair Vengeance 2x8GB DDR4-3600MHz, Intel 545s 256GB SSD, EVGA GeForce GTX 1060 GAMING 6GB
-
martonx
veterán
válasz pmonitor #15613 üzenetére
"És szerintetek a webalkalmazás miben íródott/íródik? Ha jól tudom C++-ban." - nem állítom, hogy pl. a C# egyik komponensének sincs köze a C/C++-hoz, de a C# konkrétan úgy működik, hogy megírod a kódodat C# nyelven, amiből a compiler (na, ez a compiler éppen simán lehet, hogy C/C++, de lehet, hogy Rust vagy tudja isten, lusta vagyok github-on kikeresni a Roslyn forráskódját) készít egy köztes nyelven lévő általános kódot (Intermediate Language), és futásidőben (pontosabban első futáskor) ebből készít a JIT egy arra a hw architektúrára optimalizált assembly kódot.
Bővebben: [link]
A C# nagyon sokáig windows only nyelv volt, de ez 2017 óta már nem így van. Így 2021-ben ideje lenne elfelejteni ezeket a rég berögzült paradigmákat (rakás C# rendszerünk fut Linuxon jelenleg is). Java, Javascript, PHP, Go, Python, stb. nyelvek meg soha nem is voltak windows only-k.
A konkrét példám éppen C#-os volt, ezzel nem egy C# vs. más nyelv flame-et akartam kelteni, hanem az mellett érvelni, hogy mennyi aspektusa van annak, hogy egy nyelvre azt mondjuk, hogy jó vagy csak játékszer, és ezek között a nyelv sebessége csak egy (sokszor tök lényegtelen) szempont a kismillió közül.
De látom, te most éppen a C/C++-ba beleszeretőbe vagy, amivel semmi baj nincs, én meggyőzni se akarlak semmiről. A C/C++ is teljesen jó nyelv bizonyos programozási feladatokra. Sőt minden nyelvben meg lehet oldani minden problémát, más kérdés, hogy egyes problémákat egyes nyelvekkel jóval egyszerűbben, gyorsabban meg lehet oldani, más nyelvekkel meg csak nyögvenyelősen.Ahonnan ez az egész thread elindult, hogy a C-ben lévő kódod vs. a C# kódod között futásidőben mértél némi eltérést (50% semmiképp sem drasztikus, majd ha a C-s kódod tizedannyi idő alatt lefut, akkor arra én is azt mondom, hogy na az már sebességkülönbség - és ezzel meg is válaszoltam egy korábbi kérdésed). És ezen eltérés alapján nagy hévvel kijelentetted, hogy a C# (de ide bármelyik nyelvet érthetnénk a kontextusod alapján) csak egy játékszer a C-hez képest. Miközben ez nem igaz, sőt butaság.
Én kérek elnézést!
-
pmonitor
aktív tag
válasz martonx #15619 üzenetére
Ismerem a C# működését, hiszen abban kódolok legtöbbet. C-t meg általában akkor, ha valamihez natív dll kell, vagy ha kedvem tartja. Asm-ben meg még ritkábban. Továbbá nem tudnak eladni VB6/VBA/VB.NET-ben, javascriptben php-ben, pascalban sem, bár ezek azért már akadozva mennek.
Hogy sok aspektusa van egy nyelv megítélésének, azt elhiszem. Sajnos a programozók(vagy akik annak állítják be magukat. mert a tény az, hogy 2 nick bizonyitotta be nekem, hogy tud programozni) ezek közül soknak tényleg lényegtelen szempont. Csak a gond ott van, hogy én nem vagyok programozó(és nem is mondom magam annak). Akkor vajon miért is kell a hardvert fejleszteni, ha a sebesség lényegtelen? Valaki írta, hogy a user 2 mp-et vár a gépre vagy 10-et, az nem igazán szempont. Ezzel sem igazán tudok egyetérteni annak ellenére, hogy tudom, hogy nem leszek népszerű. Sztem egy programnak 2 jellemzője van(legalábbis ha pénzt kérnek érte): az egyik, hogy jól működjön. A másik, hogy ezt minél gyorsabban tegye. Amikor a bankban az ügyintéző azt mondja, hogy a gépre várunk, majd kb. fél perc múlva lépünk tovább(addig csak nézzük egymást), annak nem igazán szoktam örülni. De akkor kérdezek egyet. Ha nem igazán szempont a sebesség, akkor miért is az nálatok a mondás, "hogy 5 másodperc alatt kell kiszolgálni egy HTTP requestet" Akkor miért kell egyáltalán bármilyen időkorlátot is felállítani, ha a sebesség nem igazán szempont? Az meg egy másik szempont, hogy aki az 5 sec-t meghatározta, ő sem volt a helyzet magaslatán, ha könnyedén a törtrésze alatt meg lehetett oldani(1 szakinak azért pontosabban be kellene lőnie a teljesíthető időt). Soha nem tudom megérteni a programozókat. Én nem közétek tartozom. Főleg úgy, hogy tudom, hogy nagyon sok mindent gyorsabban meg lehetne oldani. De természetesen itt a fizetős alkalmazásokra gondolok. Bár a free-nek is illene ezeket betartani. Pl. most én tudom, hogy lehet gyorsítani a programom kódján. Ezt meg is teszem majd attól függetlenül, hogy free a programom. Hosszú időn át nem tudom elképzelni, hogy a lassabb változat lenne fent annak tudatában, hogy van gyorsabb kód is. Amikor lesz időm, akkor módosítom.http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
martonx
veterán
válasz pmonitor #15620 üzenetére
Egy dolgot felett siklasz el. Te most a saját szórakozásodra programozol pár jópofa ciklust, és ezzel szórakozol, hogy hogyan lehet hatékonyabbá tenni, akár nyelv váltás árán is. Abba ne hagyd, ez egy nagyon hasznos hobbi!
DE ezzel szemben a rideg valóság az, hogy egyrészt a programmal szembeni követelményeket szinte SOHA nem a programozók határozzák meg. Ha az ügyfél már attól is boldog, ha az eddigi 20 másodperces futásideje 5 másodperc lesz, akkor ezt fogja beleírni a követelményei közé. Mert elképzelni sem tudja (hidd el, sokszor a programozók se látják előre a jövőt ), hogy amit szeretne az 40ms alatt is megoldható.A hardvert pedig azért kell fejleszteni, mert képzeld el a következő szitut (direkt kicsit kisarkítva):
Jón egy ügyfél, hogy kellene neki egy program, amit jelenleg 20 párhuzamos user használ, legyen gyors meg minden. Elkezd a csapat kódolni, menet közben jönnek változtatási igények, előjönnek csúszások, néhol kompromisszumos megoldásokkal kell élni stb...
Végül elkészül a kód, mindenki kipróbálja, zokszó nélkül viszi a 20 párhuzamos usert, szép, gyors, határidőre kész lett, mindenki happy.Igen, ám, de mi van akkor, ha visszajön az ügyfél, hogy nyitott még 4 másik telephelyet, ebből kettő már külföldön van, és hát a rendszer lassulgat igaz, hogy már 100 párhuzamos user van rajta. És ekkor az ügyfél választhat, beletol plusz X processzormagot Y összegért a rendszerbe, vagy elkezdi újra íratni a programját, ekkor már 100 párhuzamos userre méretezve mondjuk 5Y összegért (és ez az újraírás el fog tartani mondjuk 2 évig, miközben Y összegért azért a plusz hw erőforrást is bele kell tolnia, mert a rendszernek addig is mennie kell). Szerinted melyik opciót választja az ügyfél? Elárulom: roppant ritka az az ügyfél, aki a másodikat választja, ő is inkább csak azért, mert hardveresen már közelít a falhoz, ahonnan már nincs tovább.
És ekkor te, mint ügyfél, ott állsz az 300-adik párhuzamos user ügyfelessel szemben, és nem érted, hogy miért lett olyan szarul megírva a program, hogy várnia kell az ügyintézőnek, mire valamire reagál a rendszer. És hogy lehetnek ezek a magukat programozóknak mondó kóklerek ennyire faszok, hogy egy ilyen szart tettek le az asztalra.Én kérek elnézést!
-
sztanozs
veterán
válasz martonx #15623 üzenetére
És jönne az a kérdés, hogy fejlesztő csapat az elején miért nem 100+-os felhasználói bázisra írta meg? Mert valószínűleg volt egy árajánlat
- egy 20+ felhasználói csoportra egyszerű kódbázissal, ami X idő alatt lékszül Y forintból és N darab gép kell alá;
- és egy 100+ useres robosztusabb, elosztott változat, ami 1.5X idő alatt készül el, 2Y pénzbe kerül és N+5 darab gép kell alá.
Ebből nagy valószínűséggel az ügyfél az olcsóbb és gyorsabban elkészülő és könnyebben üzemeltethető megoldást választja - amennyiben az számára elegendő - az esetek 99.99%-ban.[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
MODERÁTOR
válasz pmonitor #15620 üzenetére
Most az 5 másodpercet így képzeld el:
- indul egy request magyarországon, ami átmászik még 5 microservicen
- az egyik kilő az usába és csak oda vissza kb. 500 ms tart az adat utazása (tegyük fel, hogy megkerüli a földet kb. fénysebeséggel)
- majd a végén még utófeldolgozás következikA való életben az 5 mp, vagy 3 vagy 10 mindig egy olyan meghatározott érték amit a user úgymond "kibír" stressz nélkül. Igen erről vannak kutatások. Nyilván célszerű a lehető leggyorsabb megoldásra törekedni.
A miért C#, Java, Python és nem C vagy ASM kérdésre a válasz pedig egyszerű. Az idő pénz és a felesleges implementációt megúszod. Nem neked kell a sokmindent is leimplementálnod.
Nem véletlenül van Spring és VM is pl.
"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."
-
pmonitor
aktív tag
Kivettem a konkrét nick megnevezéseket az oldalamról. Azzal tényleg nem vagyok előrébb, ha konkrét, de mégis "névtelen" nick-eket emlegetek az oldalamon.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
martonx
veterán
válasz sztanozs #15624 üzenetére
No igen, csak néha már úgy érzem ódákat írok (és talán mintha feleslegesen tenném), és nem akartam minden apró részletbe belemenni. Köszi a kiegészítést!
Plusz, amit egyikünk sem hangsúlyozott ki, az még a HATÁRIDŐ. Attól kezdve, hogy a szerződés megköttetett, egy programozónak határidőre el kell készülnie, nem pedig a kódot hobbiból csiszolgatnia a végletekig, akár a határidő többszörösével megcsúszva, mert így lett tuti a legszebb, leggyorsabb a kód.
Én kérek elnézést!
-
pmonitor
aktív tag
válasz martonx #15627 üzenetére
Ezért hiányzik egy olyan webhely/oldal/fórum/akármi, ahol témánként a hatékonyabb megvalósításokat tartalmazza. Vagy legalább az egyetemi tankönyvben/jegyzetben ilyen algok lennének. De ez azt hiszem, hogy csak álom.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
sztanozs
veterán
válasz pmonitor #15626 üzenetére
Amúgy visszatérve az eredeti felvetére - egyetemi jegyzet vs optimalizált kód.
Legtöbbször az egyetemi jegyzetben levő kód az optimalizáció rosszabbik végén van (nem pedig középtájon), hogy a hallgatók jobban megértsék a kód működését és képesek legyenek elsajátítani az alapvető programozási technikákat.
Hacsak nem optimalzációs techikákról szól az adott tantárgy/témakör, szvsz nem fogsz találni még közepesen optimalizált kódot se.
#15628 - szerintem a StackOverflow-n van több olyan bejegyzés is, ami az adott eljárás optimalizációját tárgyalják ki.
Alapvetően ez nem egy programozási fórum, vsz nem fogsz találni túl sok fórumozót, akit ez különösképp megmozgatná (ráadásul úgy, hogy nyelvfüggetlen / nyelvek közötti optimalizációt szeretnél kibeszélni). Egyébként semmi nem akadályoz meg abban, hogy Logouton indíts erről egy sorozatot, és ha lesz rá kereslet a hozzájuk tartozó fórumtémák is aktívak lesznek...[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
pmonitor
aktív tag
válasz sztanozs #15629 üzenetére
Ez a kód:
static void Teszt_5(char[] arr)
{
char[] arr2 = (char[])arr.Clone();
int size = arr.Length;
QuickSort(arr2, 0, size - 1);
//Array.Sort(arr2);
int n = arr2.Length;
int i, j;
char temp;
//for (i = 0; i < n; ++i) arr2[i] = i + 1;
while (true)
{
// kiirjuk az aktualis permutaciot
/*for (i = 0; i < n; ++i) Console.Write("{0} ", arr2[i]);
Console.WriteLine("");*/
// megkeressuk, hol kezdodik az utolso monoton csokkeno reszsorozat
for (i = n - 2; i >= 0 && arr2[i] >= arr2[i + 1]; --i) ;
// ha a teljes sorozat monoton csokkeno, akkor vegeztunk
if (i < 0) break;
// a csokkeno reszsorozat elotti elemet ki kell cserelnunk a reszsorozatban nagysag szerint rakovetkezovel
for (j = n - 1; arr2[j] <= arr2[i]; --j) ;
temp = arr2[i]; arr2[i] = arr2[j]; arr2[j] = temp;
// tovabbra is monoton csokkeno a reszsorozatunk, forditsuk meg, hogy monoton novekedo legyen
for (j = i + 1; j < n + i - j; ++j)
{
temp = arr2[j]; arr2[j] = arr2[n + i - j]; arr2[n + i - j] = temp;
}
}
}Ennek a kódnak:
static void IsmPermutacio(char[] tomb2, int[] N, int n, int[] W1, int s, int i)
{
int[] V = new int[n];
int[] W = new int[n];
CopyMemory(W, W1, (uint)(n * intSize));
//Array.Copy(W1, W, n);
if (i == 0)
{
for (int l = 0; l < s; ++l) W[l] = -1;
}
if (s != 0)
{
bool ind = true;
do
{
Kombinacio(V, s, N[i], ref ind);
if (!ind)
{
Betesz(N[i], n, V, W, i);
IsmPermutacio(tomb2, N, n, W, s - N[i], i + 1);
Kivesz(W, n, i);
}
} while (!ind);
}
else
{
Betesz(N[i], n, V, W, i);
//*****************************************************
/*for (int q = 0; q < n; ++q) Console.Write(tomb2[W[q]]);
Console.WriteLine("");*/
//*****************************************************
for (int l = 0; l < n; ++l) W[l] = -1;
}
}
static void Kombinacio(int[] V, int n, int k, ref bool ind)
{
if (ind)
{
for (int i = 0; i < k; ++i) V[i] = i;
ind = false;
return;
}
for (int i = k - 1; i > -1; --i)
{
if (V[i] < n - k + i)
{
++V[i];
for (int j = i + 1; j < k; ++j) V[j] = V[j - 1] + 1;
return;
}
}
ind = true;
}
static void Betesz(int ni, int n, int[] V, int[] W, int i)
{
int j = -1, l = 0;
for (int p = 0; p < ni; ++p)
{
while (l < n)
{
if (W[l] == -1) ++j;
if (j == V[p])
{
W[l] = i;
break;
}
++l;
}
}
}
static void Kivesz(int[] W, int n, int i)
{
for (int l = 0; l < n; ++l) if (W[l] == i) W[l] = -1;
}Nem az optimalizálása, hanem teljesen más(egyszerűbb) algoritmus.
És sztem az első algoritmus érthetőbb is.
[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
Marky18
aktív tag
válasz sztanozs #15629 üzenetére
egyetemi jegyzet vs optimalizált kód.
Szerintem a legfontosabb az, hogy ellassa a kod a feladatat. Hiaba irod meg a leheto legoptimalisabb low-level eljarast egy adott problemara, ha az egesz feladat 1%-at oldottad meg a rendelkezesre allo ido nagy resze alatt, illetve hiaba irnak brutalgyors peldakat az egyetemi jegyzetben, ha egy tapasztalt fejlesztonek is orakba telik kibogozni, hogy mi tortenik. Az OOP valahol ennek menten jott letre, hogy olvashato, ujrahasznalhato kodot irjunk es ne csak egy szakallas szaki tudja, hogy mukodik az adott kodreszlet.Azt sem szabad elfelejteni, hogy a low-level problemak nagy resze mar meg lett oldva evtizedekkel ezelott, nekunk csak hasznalni kell a megirt kodokat, hogy user kozeli problemakat oldjunk meg veluk. Hardverkozeli kodot C-ben is ASM-ben irnak, webalkalmazast pedig C#-ban, Javaban, mert nem akarunk az OSI modellben turkalni, hogy egy GET requestet lefuttassunk. Mas retegbeli problema, mas retegbeli eszkozoket kivan.
-
fatal`
titán
válasz pmonitor #15628 üzenetére
Ezek adott esetben ipari titkok (persze nem az általános algoritmusokra gondolok itt), szóval nem csoda.
Sok esetben pedig a gyorsaságnál sokkal fontosabb, hogy másoknak is olvasható maradjon a kód.
Az egyetemi jegyzetben egyszerűbb algok vannak, amiket könnyebb megérteni (vagy legalábbis ez a célja, nem mindig sikerül).
Egyszerű példaként sosem voltam képes megérteni, hogy miért a buborékrendezést tanítják elsőnek, ami lassú is és szerintem abszolút nem egy logikus megközelítés. Teljesen kezdőknek egy maxker/minker rendezés sokkal logikusabb (és gyorsabb is, persze nem a leghatékonyabb), mert szerintem sokkal közelebb áll ahhoz, ahogy az életben is rendez az ember.
[ Szerkesztve ]
-
axioma
veterán
válasz fatal` #15632 üzenetére
Szerintem a buborek amit a legkonnyebb nem elrontani, mert csak ket ciklus logikus hatarokkal (es me'g akkor sincs gond ha n-szer vegigmegy az egeszen). Minden masnal +-1 konnyen elirhato. Raadasul ha "majdnem" rendezett akkor a kevesebb csere, debug eseten jobban atlathato. A beszurassal operaloknal az algo latvanyos resze mogotti masodik lepes (odebbtolni a maradekot) ami problemat okozhat (amelyik nyelvben meg split/join megoldod, ott meg annal is lassabb lesz mintha fix helyen atpakolgatnal). Oktatasra ezert a buborek mint kalyha nem rossz szerintem.
Ha valaki nem ismerne', tancos valtozatok: [link] -
fatal`
titán
válasz axioma #15633 üzenetére
Ha készen / kóddal közelítesz, akkor ez jogos, ezzel szemben én elméleti oktatásnál találkoztam vele először és nem a legérthetőbb elmélet, szerintem - mert a való életben senki nem rendez így.
De ez csak egy példa volt a sok közül, ami hirtelen eszembejutott. Gyakorlati példán keresztül, valóban nem biztos, hogy rossz, annak ellenére, hogy senki nem használja.
-
axioma
veterán
válasz fatal` #15634 üzenetére
Lehet hogy csak az eloadas volt a gyakorlat anyagahoz is igazitva. De mindegy is, az eredeti felveteseddel egyetertek nyilvan.
Esetleg az is felmerulhet, hogy a buborek - ha kezdoknel maradunk - azt is megmutatja, ohgy mashogy egyszerubb az algoritmusnak mint neked kezzel. Pont azert amiert a beszuro megy amikor felszeded a kezedben levo paklikat, mert tkp az egeszet latod egyszerre, van egy kep a fejedben a megoszlasrol is (nagyok vannak a kezemben, a kicsi a bal szelen kell nezni hogy pont hova) stb., de ilyenekkel nem tud az algo mit kezdeni, egyesevel nezve meg ez a helycseres latvanyosabb. Ha meg eleve nem k-1-ig megy hanem "amig van csere" akkor meg vegkepp szemleletformalo.
(Pl. itt egy mesterseges pelda, ki csinalna' konstruktivan, ki valami egyszerubb kerulouton? [link] Mindketto 10 sor alatti pythonban, beleertve esetekre ciklus, beolv, kiir, minden, de tok jol mutatja hogy mennyire allt at a gondolkodas.)[ Szerkesztve ]
-
Livius
őstag
válasz pmonitor #15628 üzenetére
Már régebben írtam neked hogy erre van a GitHub meg a többi ilyen nyílt repo kezelős közösségi oldal. Ha az utókornak és másoknak akarsz hasznosat alkotni, akkor oda kell felrakni a kódokat, lehetőleg angol leírásokkal. A jelenlegi privát weboldalad az internet süllyesztőjében elvész, nem sokra jó.
Gigabyte GA-Z170-D3H, Intel Core i7-7700K, Corsair Vengeance 2x8GB DDR4-3600MHz, Intel 545s 256GB SSD, EVGA GeForce GTX 1060 GAMING 6GB
-
pmonitor
aktív tag
válasz Livius #15638 üzenetére
Próbálgatom szárnyaimat. Az a baj, hogy angolul az írott szöveg lényegét megértem, de önálló mondatot nem tudok összerakni. Meg a szavak szinonimái is 1 kicsit gondot okoznak. Úgyhogy marad a kevert angol/magyar. De pl. a QuickSort-ot meghagytam angolul.
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
Weareus
addikt
Üdv.
Wordpad (esetleg Wordpad++)-ban van olyan string, metódus v. bármi, amivel egy billentyű lenyomásával tudok egész sort törölni? (Mondjuk pont azt, ahol épp a kurzor van)?Lehetőleg úgy lenne a jó, ha magát az üres sort sem hagyná meg utána...
[ Szerkesztve ]
Soul of the mind, key to life's ether. Soul of the lost, withdrawn from its vessel. Let strength be granted, so the world might be mended. So the world might be mended.
-
Weareus
addikt
Köszi mindenkinek, és mennyivel jobb már így!
Soul of the mind, key to life's ether. Soul of the lost, withdrawn from its vessel. Let strength be granted, so the world might be mended. So the world might be mended.
-
pmonitor
aktív tag
Itt találtam a következő algoritmust(átírtam C-be):
void GenArrangement(int n, int k, int idx, int used, int arran) {
if (idx == k) {
printf("%d\n", arran);
return;
}
int i;
for (i = 0; i < n; i++)
if (0 == (used & (1 << i)))
GenArrangement(n, k, idx + 1, used | (1 << i), arran * 10 + (i + 1));
}Ez sokkal gyorsabb, mint az én algoritmusom. Kár, hogy csak nagyon korlátozottan működik. De azért érdekességnek jó.
[ Szerkesztve ]
http://www.bferi.hu/download.php ; http://bferi.hu/egyeb.php
-
Livius
őstag
válasz pmonitor #15639 üzenetére
Igazából mindegy milyen nyelven publikálsz a GitHub-on. A lényeg hogy a GitHubon legyen fent, mert a Google és minden kereső a legjobb találatokat onnan hozza. Tehát ha valaki magyar nyelven keres valami olyat, amiről te csináltál ott valami repot és szép dokumentációt, akkor azt eléggé az első találatokban hozza majd elő, és innentől kezdve igen hasznos lehet az amit oda felraksz. Nyilván ha angol leírásokat írsz, azt világszinten még többen betalálnák a Google-vel. Amúgy minden mappádba rakhatsz egy Readme.md text fájlt, amiben a markdown syntaxissal csinálhatsz elég jó féle dokumentációkat és leírásokat. Ezek a legfontosabbak, hogy valaha valaki rád találjon a neten. Példa: [link]
[ Szerkesztve ]
Gigabyte GA-Z170-D3H, Intel Core i7-7700K, Corsair Vengeance 2x8GB DDR4-3600MHz, Intel 545s 256GB SSD, EVGA GeForce GTX 1060 GAMING 6GB
-
cigam
félisten
A verziókezelést hogyan célszerű megoldani? Pl. készítek egy programot ami már működik, legyen ez az 1.0. Javítok pár hibát, ami menet közben előjött, legyen 1.1. Aztán kitalálom hogy még valami plusz funkciót is tudhatna, lett egy 1.2.
Amikor nekiálok az 1.1-nek, akkor nyitok egy új projektet aminek a nevében már 1.1 szerepel, és beimportálom a régi kódot? A VS community kiadásában van erre valami beépített megoldás? Hogyan csinálják a "nagyok"?Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Vicces képek
- Crypto Trade
- Az Apple megszerezné a klubvilágbajnokság közvetítési jogait
- Lakáshitel, lakásvásárlás
- Az iPadOS-re írt appokra is díjat vet ki az Apple
- Amlogic S905, S912 processzoros készülékek
- Path of Exile (ARPG)
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Építő/felújító topik
- sziku69: Szólánc.
- További aktív témák...
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen