• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    PJOTRIK
    PJOTRIK --- ---
    MAIMONIDES: Ja vnimam jako uzitecny i samotny fakt ze deklaruju ze parametr je "in", zvysena rychlost je fajn, ale resil bych ji jen na konkretnich mistech na hot path (a to jsem nijak nemeril).
    Chybu jsem v te souvislosti objevil jednu, netykala se ale konkretne in parametru. Na upravy jsem vyuzil tenhle code analyzer, ktery odchytil ze nekdo pouzil KeyValuePair jako klic v Dictionary.

    MORMEGIL: ale jo, smysl to dava, ale libilo by se mi kdyby kompilator umel rozlisit ty opravdu problematicky pripady a ty kde se lambda pouziva jen treba kvuli citelnosti. Na druhou stranu, to ze se tam pouziva takova konstrukce asi znamena ze to nebude nekde uvnitr vykonnostne kritickyho mista, tak se to da chapat i jako signal ze tady ten "in" parametr neni potreba.

    A u toho dynamic dispatche teda nechapu ani duvod.
    MORMEGIL
    MORMEGIL --- ---
    MAIMONIDES: Tak primární motivací je výkonnostní optimalizace (méně kopírování), úplně bych nečekal, že se tím odhalí nějaká chyba… (Jedinou možnost vidím v tom, že někdo ve struktuře předávané hodnotou něco změní, protože si myslí, že se to projeví někde jinde, ale to je vcelku obskurní scénář, řekl bych.)
    MAIMONIDES
    MAIMONIDES --- ---
    PJOTRIK: a odhalilo to zavádění jedinou chybu nebo přineslo nějakej užitek?
    MORMEGIL
    MORMEGIL --- ---
    JANFROG: Jasně, ale to mi právě přijde, že je úplně proti smyslu celé té konstrukce, sloužící k výkonnostní optimalizaci, aby se všechno předávalo bez kopírování. Pokud něco takového potřebuju, tak si to holt někde na heapu alokuju sám, zatímco pokud by mi jazyk umožnil to dělat automaticky s tím, že mi tam občas skrytě přidá nějakou alokaci nebo dokonce kopii, tak asi budu dost naštvaný, řekl bych.
    JANFROG
    JANFROG --- ---
    MORMEGIL: Tak, detaily se mohou lisit (a v tech je dabel), ale pro pristup k nelokalnim promennym lze pouzit dve metody (zjednodusene):
    1) implementacne jednodussi je alokovat tyhle promenne ve skutecnosti na heap v "tempvector" a propagovat constantni referenci na ten "tempvector"
    2) o neco slozitejsi je alokovat na stacku a detekovat situaci, kdy se lambda "ulozi do globalni promenne" (a jine pripady) a zaroven dojde k ukonceni te metody, na jejimz stacku ta promenna (promenne) byla (byly) a v tom pripade referenci "evakuovat" na heap.

    1) je jednodussi, ale platis alokaci na heap pri kazde aktivaci metody ktera to potrebuje, 2) je slozitejsi ale v pripadech kdy lambda neprezije aktivaci vnejsi metody je overhead mensi (overhead pri "evakuaci" je v pravde desivy).

    Implementoval jsem oboji zpusob, udelat 2) spravne a rychle je netrivialni (= zesedivis z toho :-), ale zda se mi, ze to vychazi vykonove lepe (ale tohle se blbe meri)
    MORMEGIL
    MORMEGIL --- ---
    JANFROG: Jak?
    JANFROG
    JANFROG --- ---
    MORMEGIL: To je IMHO resitelne...
    MORMEGIL
    MORMEGIL --- ---
    PJOTRIK: No a jak čekáš, že by tam in/ref/out parametry fungovaly? Ta proměnná někde leží (třeba na stacku nějaké funkce o pět úrovní volání výše) a ty ji použiješ v lambdě, kterou si uložíš do globální proměnné a necháš ji tam ještě hodinu, když už ta metoda, na jejímž stacku ta proměnná ležela, dávno skončila…
    VITI
    VITI --- ---
    PJOTRIK: no ja udrzuju jednu wpf devex aplikaci, neni to zadny graficky high end, vicemene rad pouzivam datagrid, ostatni tak spis z donuceni, ale zadny extra problemy neregistruju.
    TOOMIX
    TOOMIX --- ---
    PJOTRIK: WPF ne, ale cca 14 let kupujem WinForms, co Ti tam nejde? Bude to nejspíš podobný
    PJOTRIK
    PJOTRIK --- ---
    Nejake zkusenosti s DevExpress WPF komponentama?
    U nas jsme to zkusili par mesicu pouzivat a v podstate jsme nenarazili na pripad kdy by byly nejak prinosny... pokazdy jsme skoncili na nejakym bugu nebo nutnosti komponentu ohybat stejne hodne jako bysme pouzili zakladni wpf
    PJOTRIK
    PJOTRIK --- ---
    Jsem ted prvne zkousil do naseho kodu zavest "in" parametry a dost neprijemne me prekvapilo kolik to ma omezeni
    - neda se takovy parametr pouzit uvnitr lambdy
    - nejde to pouzit v iteratorech, tj IEnumerable metodach co pouzivaj yield
    - metodu s in parametrem nejde volat pres dynamic dispatch
    CERMI_FOX
    CERMI_FOX --- ---
    NECROMAN:
    SMOKY: asi fakt záleží na projektu, znám dva lidi, co tam dělali a moc se jim tam nelíbilo.
    VITI
    VITI --- ---
    NECROMAN: ex kolega je spokojeny.
    SMOKY
    SMOKY --- ---
    NECROMAN: Záleží na projektu. Já sem tam byl spokojený.
    NECROMAN
    NECROMAN --- ---
    Práce na .NETu v Barclays, ano či ne? Máte nějaké zkušenosti?
    TOOMIX
    TOOMIX --- ---
    FREELA: jestli chceš dělat winforms, tak ještě zůstan u .NET Framework 4.8, jinak rovnou přejdi na .NET Core 3.1
    ARANIUS
    ARANIUS --- ---
    FREELA: Chod rovno na .net core 3.1.
    Tiež si dávaj pozor na example aby boli pre .net core pre verziu 3 a vyššiu. Example s nižším .net core frameworkom nemusia fungovať na 100%, keďže d 3jkou prišlo dosť zmien...
    FREELA
    FREELA --- ---
    Chystam se prejit na .NET Core. Nejake obecne zkusenosti nebo rady? Zatim v tom zadnou velkou vedu nevidim
    LARS_GUNNER
    LARS_GUNNER --- ---
    MAIMONIDES
    MAIMONIDES --- ---
    LARS_GUNNER: To je situace někde na vsi? V Praze chtěj embedded pořád a peněz nabízí dost. Nabídky chodí co týden.
    JANFROG
    JANFROG --- ---
    LARS_GUNNER: Problem je, ze v "high level" (pokud ti dobre rozumim) se veci meni rychle, je tam celkem fluktuace takze firmy hleda lidi, co proste umi to co aktualne pouzivaji (chteji pouzivat) protoze nemaji (nechteji) cas nekoho neco ucit. Alespon tak to vidim ja.
    Takze muj pristup je presne opacny, norim se hloubeji, vic a vic low-level veci. Tam je situace stabilnejsi, veci se nemeni tak rychle (jeden by rekl, ze skoro vubec :-) a veci trvaji dlouho a je cas se ucit.
    Ale je to sazka do loterie zrovna tak jako sazet na "high-level". Snad se mi to nevymsti :-)
    Kliknutím sem můžete změnit nastavení reklam