- carlcolt blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
E) Mutass statisztikát, hogy az egyik szignifikánsan gyorsabb -> Neked az R való
Csaba
- A hozzászóláshoz be kell jelentkezni
Jaja :D
- A hozzászóláshoz be kell jelentkezni
locsemege: Tudok, de inkább ASM-ben állok neki, mert úgy még ki tudok sajtolni néhány órajelet itt-ott.
- A hozzászóláshoz be kell jelentkezni
"par ora alatt"
nem, nem tudsz.
- A hozzászóláshoz be kell jelentkezni
Azok az idok mar elmultak. Emlekszem ra, hogy sorrenddel meg mas "hacking" alkalmazassal sikerult gyorsitani 10% ot, meg belement ugy 3 embernap. Nem eri meg a resource olcsobb. Vicces ezért igaz.
Every single person is a fool, insane, a failure, or a bad person to at least ten people.
- A hozzászóláshoz be kell jelentkezni
Nyilvan terulet- meg problemafuggo, de azert van egy olyan resz ahol meg mindig egeszen jol teljesit a nyers assembly C-hez kepest. Konkretan specialisabb bitmuveleteknel, ahol a bitshifteket feltetelekhez kotod es/vagy feltetelek mulnak rajta (ami mint terulet, elegge atfed a veges test aritmetikaval, hash fuggvenyekkel, crc-szamitassal, titkositassal, stb is). Sajat pelda, par hettel ezelottrol:
[...] uint32_t b; [...]
for ( ... )
{ [...]
if ( b&0x80000000 )
b=(b<<1)^PRIMITIVE_POLYNOMIAL;
else
b=(b<<1);
}
Ez a ciklusmag-elem ARM/thumb1 alatt egy sima "left shift" + "branch if not carry" + "xor" sorra fordithato. Eredmeny: 150%-kal gyorsabb mint a C altal generalt barmi ;) Persze a fenti bitmuvelet-trukkokon felul meg van egy kis makrositott unrolling, az ABI eroteljes kihasznalasa, naked + noinline attributumok, stb, de az marcsak a hab a tortan. Szoval barhogyis, nehanapjan lehet olyan feladat a mai napig, ami csak perc gondolkodas, cserebe rohadt nagy nyereseg.
De egyebkent teljesen jogos amit mondasz, altalanos esetben baromi kicsi a varhato erteke a nyeresegnek. Nalam is a custom _start entry pointokat meg ilyen lowlevel dolgokat leszamitva 5-6 ev ota ez az elso eles assembly betetem amit C-kodba tettem...
- A hozzászóláshoz be kell jelentkezni
:)
Assemblyben jellemzően 8 bites mikrokontrollernek esek neki. 32 bites MIPS architektúrához csupaszon, vagy PC-re oprendszer fölé jó a C. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Volt olyan project, amihez C-t kellett hasznalnom, pedig orultem volna a C++ extra feature-einek (LinuxCNC modul). Van, hogy meg van adva, hogy mit hasznalhatsz esszeruen az adott kornyezetben. Amugy STL-hez hasonlo funkcio pont nem kellett.
C es C++ kozt inkabb ott lehet kulonbseg, hogy egyreszt hasznalhatsz-e C++-t, ill. ha libet irsz, akkor C-t mashoz konnyebb kapcsolni, emiatt erdemes megfontolni azt (polimorfizmus miatti plusz dolgok a nevben).
Ha a fejlesztesi ido fontosabb a futasinal, akkor Python.
JS meg bongeszohoz, kliensoldalra. Kevesbe eltalalt nyelv szerintem, mint az elozoek, de a webasm valoszinuleg tobb szivast hozna.
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
Hát, lehet onnan is kezdeni, hogy legyártom az alapkomponenseket. Végül a 14. perctől szól vele a rádióvevő, szívmelengető: https://www.youtube.com/watch?v=EzyXMEpq4qw
De onnan is lehet kezdeni, hogy veszek ehhez standard IC-ket, netán egyéb egychipes cél IC-t és abból gyorsabban összerakok egy sokkal jobb paraméterű eszközt.
Ami viszont fontosabb, hogy mi a megvalósítandó feladat és milyen egyéb feltételek befolyásolnak?
Kalapács vagy villáskulcs célszerűbb hozzá? Bár az utóbbival az anya meghúzásán túl lehet püfölni is, de az előző arra mégis praktikusabb a püfölésre.
De kalapáccsal ne akarj anyát meghúzni. Viszont a villáskulcs+kalapács együtt igen hatékony lehet a berohadt anya leküzdésére.
Programozási nyelvet is jó esetben a feladathoz választunk. Viszont a feladaton kívül sok egyéb tényező is befolyásolja a döntést.
Egy ilyen példa, hogy ha nekem azt mondod, hogy itt egy néhány millió soros TXT fájl (mérési adatok), amit értékeljek ki a prezentációhoz, akkor Python, mert az összedobás+eredményhez jutás együttese itt a leggazdaságosabb. Ha pedig egy nagy terhelhetőségű reverz proxy a cél valami hálózati szolgáltatás elé, akkor meg Rust, mert gyors és biztonságos.
- A hozzászóláshoz be kell jelentkezni
Miben irnal SQL servert mindegyik isolacios szint tamogatasaval, ha teljesitmeny ill HA clusterezhetoseg szamit ?
Masik kerdes, mi az aktualis tanacs mondjuk RCU hasznalatra rust -ban ?
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
Miben irnal SQL servert
Én pl. semmiben, legalábbis amíg ki nem derül, hogy a meglévő csilliárd RDBMS megoldással mi a gond. :)
- A hozzászóláshoz be kell jelentkezni
Először azon gondolkodnék el, hogy milyen olyan funkciót tudnék tenni bele, amitől jobb lenne mint a többi?
Például SQL helyett egy bináris protokollt csinálnék, amivel az SQL mögötti matematikai kifejezéseket lehet leírni, és csak efölött lenne egy réteg az SQL, de azt nem az adatbázis kezelné, hanem a kliens oldali lib. Ez tetszene, bár nem vagyok biztos benne, hogy van értelme.
Aztán úgy csinálnám, hogy az értelmező meg a végrehajtás-tervező az magas szintű nyelv lenne talán a Java magasságában, de maga az engine ami végrehajtja, az meg lehet, hogy C lenne úgy optimalizálva, hogy lehetőleg még dinamikus memória foglalás is minimális legyen. Legalábbis nem bizgentyűnkként, hanem a tervnek megfelelően előre foglalna. Szóval hogy gyors legyen, értitek.
Aztán a háttértár műveleteket egyből az új Linux API-val valósítanám meg, amiről itt nemrég szó volt. Ezzel talán lehetne javítani a sávszélességen a régi API-kra épülő meglévő engine-ekhez képest.
Valami ilyesmit csinálnék. Szerintem C-Java hibrid lenne. A Javát úgy csinálnám meg, hogy fusson .NET VM alatt is, hogy tudjanak versengeni a kegyeimért.
- A hozzászóláshoz be kell jelentkezni
java .net -> gc pause
Raw muveletek, mint felhuzas oszefesules kozel elfogadhatoan megy a mostani adatbazisokon.
Ill van tarol eljaras is.
De a tarolt eljaras, kb python sebessegu mysql/mariadb esetben, illetve a query-ben szereplo kifejezesek is python sebessegu.
Van native tarolt eljaras is, de ezt nem szeretik adminolni, libeket toltni a DB mele, ez gyors.
eBPF ? Nem pont , de valami ami elobb utobb native kod lesz es gc pause miatt sem kell tartani, ill nem limitalt tulsagosan memoria foglalsi megszoritasokkal.
mysql protokol nem tulsagosan barati a modernebb I/O strategiakkal, ill vannak olyan adat tipusok amit kuldo/fogado oldalon koltseges eloalitani parsolni.
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
> java .net -> gc pause
Igen, ezért mondom, hogy az SQL->végrehajtási tervet csinálnám ebben. Ahol zavaró a gc pause, ott legyenek előre elkészített tervek és real time csak paraméter behelyettesítések történnek amihez már nem kell elővenni az SQL parsert.
- A hozzászóláshoz be kell jelentkezni
Nem ertem miert kene elhinnem a Rustrol mindent, amit josolnak neki.
6 eve vegigneztuk ugyanezt Swifttel, 12 eve meg Go-val.
Mindketto vegul reszterulet-nyelv maradt. A Rust is az lesz, a C es C++ vilagat nem fogja bolygatni hosszutavon.
- A hozzászóláshoz be kell jelentkezni
Amint nepek olyan cikket olvasnak , hogy google atirt nehany alkalmazst go -rol rust -ra,
abbol nepszeruseg novekedes lesz.
rust nem gatolja meg hogy a teljesitmeny erzekeny reszek asm -ben vagy C -ben legyenek.
Vevo meg ha azt olvassa hogy rust -ban van termek azt gondolja biztonsagosabb, ez eleg hogy piaci elonyre tegyel szert amig hype train robog.
C++, java, C# , pascal, D, ada ..
A fo ok hogy ezekeben kezdjen uj projectet rust helyett valaki, hogy azt hasznalta tegnap is.
rust crate rendszere olyan ami C -hez nem igazan van, de majdnem minden mas elterjedt dologhoz mar van.
python super lassu, go nagyabol azert van mert feladtak hogy valaha is olyan toolt csinalnak amivel
a python codok ertelmes sebbessegel menjenek fura problemak nelkul.
rust velhetoleg jobb eredemnyt eredmenyez ott ahol most go van.
pythonban lehet gyorsnak tunik elkezdeni valamit, de hosszu tavon legtobbszor siras a vege.
Egy C forito is megfog olyan hibakat, ami pythonban futas ideju lesz.
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
pythonban lehet gyorsnak tunik elkezdeni valamit, de hosszu tavon legtobbszor siras a vege.
Azért nehéz az ilyen kijelentéseket komolyan venni. :) Valamire jó, valamire nem.
Egy C forito is megfog olyan hibakat, ami pythonban futas ideju lesz.
Static analysis azért van Pythonhoz is, ennyire nem rossz a helyzet.
- A hozzászóláshoz be kell jelentkezni
"Azért nehéz az ilyen kijelentéseket komolyan venni. :) Valamire jó, valamire nem."
troll mode ;-)
Valamire tenyleg jo, de valjuk be tobb helyen van mint ahol kene.
"Static analysis azért van Pythonhoz is, ennyire nem rossz a helyzet."
Shell script-tol jobb a helyzet, invalid syntax prod elott megvan.
"module"
def food(bbb):
"Add 23 to arg"
return bbb.add(23)AAAA = 42
food(AAAA)
Ez atment flake8 en es pylint -en.
pylint elkapta methodues nelkul, flake8 nem.
/tmp/f.py:1:0: C0104: Disallowed name "foo" (disallowed-name)
;-)
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
- def food(bbb):
+ def food(bbb: int):
És már sikít is az IDE, hogy Unresolved attribute reference 'add' for class 'int'
- A hozzászóláshoz be kell jelentkezni
int helyett masra gondoltam, de ugy latom abc is lehet hint.
pylint tovabb engedte, melyik checker/linter tudja megfogni ?
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
Ez a PyCharm sajátja, más lintert rá sem engedtem már. Lehet, hogy máshol továbbengedi.
abc nem lehet (amíg nincs definiálva, nyilván), mert Unresolved reference 'abc'. Ráadásul ha abc a hint, akkor a food(AAAA) sorra fogja azt mondani, hogy Type 'int' doesn't have expected attribute 'add', mivel az AAAA-nak amikor értéket adtál, akkor type hinting nélkül is rájön, hogy az egy int.
- A hozzászóláshoz be kell jelentkezni
abc = Abstract Base Class
interface-t igy lehet pythonban.
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
De akkor hiányzik egy import :)
- A hozzászóláshoz be kell jelentkezni
Hát a Rust most kerül bele a Linux kernelbe hivatalosan... szóval ez nem úgy tűnik, hogy a következő hype, ez minimum 10 évig velünk marad, szerintem sokkal tovább is.
- A hozzászóláshoz be kell jelentkezni
Az, hogy belekerul, egy dolog.
Az, hogy 10 ev mulva is az Asahi Lina alnevu social media attention whore drivere lesz az egyetlen, vagy lesz masik is, az egy masik.
- A hozzászóláshoz be kell jelentkezni
Nézd, amiről te írsz, az a kategória, hogy "hírverést csinál magának, és végtelen ideje bütyköli a saját out-of-tree branchét, ami a kutyát se érdekel igazából".
Ez viszont már nem az.
Sok ember, pl Linus is kifejezetten látja a nyelvben levő pluszt a C-hez képest. Amennyire kategorikusan elutasítóak a C++-al szemben a kernelben, annyira meglepően villámgyorsan felszálltak sokan a Rust vonatra, mert mérnökileg jobb, mint a C: tömörebb, biztonságosabb kód írható vele.
- A hozzászóláshoz be kell jelentkezni
Meglatjuk
- A hozzászóláshoz be kell jelentkezni