• ú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
    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.
    Kliknutím sem můžete změnit nastavení reklam