Bitové operace ve vyšších jazycích

Kiwi

Re:Bitové operace ve vyšších jazycích
« Odpověď #45 kdy: 06. 09. 2016, 19:07:45 »
Právě protože nejsem lopata, tak řeším řádově složitější problémy. A bitové posuny jsou asi cool, ale tak před 30 lety. Dneska máš daleko zajímavější problémy a bez bitových posunů se můžeš klidně obejít. Jen aby z toho někdo nedělal nějaké základy, které je potřeba umět.

 ;D ;D ;D ;D ;D
Například jaké? Ať se taky trochu pobavíme...  :D


Kolemjdoucí

Re:Bitové operace ve vyšších jazycích
« Odpověď #46 kdy: 06. 09. 2016, 19:08:51 »
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.

No to samozřejmě bude, ale jen pokud udělá správný index (pomocí funkce která bude pracovat s příslušnými bity).

gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #47 kdy: 06. 09. 2016, 20:00:34 »
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.

No to samozřejmě bude, ale jen pokud udělá správný index (pomocí funkce která bude pracovat s příslušnými bity).

Tohle v mysql AFAIK nejde. Navíc tím moc místa neušetříš.

gl

Re:bitové operace
« Odpověď #48 kdy: 06. 09. 2016, 20:09:18 »
Pro práci s IP a RGB se používají knihovny, často implementované v C. Množiny jsou součástí jazyka. Neříkám, že bitové operace není dobré znát, ale ve spoustě oborů se s nimi člověk nesetká.

Obecné množiny (které jsou IMHO v Pythonu reprezentovány jako normální dict s dummy hodnotami) jsou něco jiného než množiny reprezentované binárně. Ty uměl starý (ne-dobrý :-) Pascal. Takže při požadavku na efektivní reprezentaci a složitost všech operací O(1) to stejně někdo musí naprgat, ať již v C či v Pythonu. Opět  = někdo tady zmínil BitSet, to je Javovina a ta třída existuje, protože se to používá. Ne denodenně ale používá.

Složitost jakých všech operací je O(1)? Nezáleží to na velikosti domény? Pokud pracuji s malými množinami nad velkou doménou, tak je reprezentace hash tabulkou efektivnější a téměř vždy dostatečně efektivní. Ty pascalovské množiny mají jen dost omezené použití.

Kit

Re:bitové operace
« Odpověď #49 kdy: 06. 09. 2016, 20:34:28 »
Složitost jakých všech operací je O(1)? Nezáleží to na velikosti domény? Pokud pracuji s malými množinami nad velkou doménou, tak je reprezentace hash tabulkou efektivnější a téměř vždy dostatečně efektivní. Ty pascalovské množiny mají jen dost omezené použití.

Pascalovské množiny se běžně používají v souborových systémech pro mapování volných clusterů.


v

Re:Bitové operace ve vyšších jazycích
« Odpověď #50 kdy: 06. 09. 2016, 21:04:58 »
prý nízkoúrovňové OMG :D to je dělění taky, ne? a otázka na papíře co je výsledkem výpočtu 1/0 je taky, blbost, ne? někteří tady jsou fakt lopaty

Kolemjdoucí

Re:Bitové operace ve vyšších jazycích
« Odpověď #51 kdy: 06. 09. 2016, 21:15:33 »
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.

No to samozřejmě bude, ale jen pokud udělá správný index (pomocí funkce která bude pracovat s příslušnými bity).

Tohle v mysql AFAIK nejde. Navíc tím moc místa neušetříš.

Ale jde, jen jak je již v MySQL tradicí tak se to dělá trochu jinak: http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

Pokud si nemůžete dovolit použít víc místa kvůli zrychlení přístupu k datům tak máte problém.

gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #52 kdy: 06. 09. 2016, 21:25:02 »
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.

No to samozřejmě bude, ale jen pokud udělá správný index (pomocí funkce která bude pracovat s příslušnými bity).

Tohle v mysql AFAIK nejde. Navíc tím moc místa neušetříš.

Ale jde, jen jak je již v MySQL tradicí tak se to dělá trochu jinak: http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

Pokud si nemůžete dovolit použít víc místa kvůli zrychlení přístupu k datům tak máte problém.

Co mi to přinese oproti separátním sloupcům?

Kolemjdoucí

Re:Bitové operace ve vyšších jazycích
« Odpověď #53 kdy: 06. 09. 2016, 21:39:43 »
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.

No to samozřejmě bude, ale jen pokud udělá správný index (pomocí funkce která bude pracovat s příslušnými bity).

Tohle v mysql AFAIK nejde. Navíc tím moc místa neušetříš.

Ale jde, jen jak je již v MySQL tradicí tak se to dělá trochu jinak: http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

Pokud si nemůžete dovolit použít víc místa kvůli zrychlení přístupu k datům tak máte problém.

Co mi to přinese oproti separátním sloupcům?

Rychlejší mapování do aplikace - přes ORM půjde jen ten jeden sloupec který si pak v aplikaci rozložíte na jednotlivé bity. Indexy si naděláte jen nad těmi bity (nebo kombinacemi bitů) kde budou doopravdy potřeba, jen tam to bude brát víc místa (jak je u indexů obvyklé).

Kit

Re:Bitové operace ve vyšších jazycích
« Odpověď #54 kdy: 06. 09. 2016, 21:51:54 »
Ale jde, jen jak je již v MySQL tradicí tak se to dělá trochu jinak: http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

Pokud si nemůžete dovolit použít víc místa kvůli zrychlení přístupu k datům tak máte problém.

Co mi to přinese oproti separátním sloupcům?

Rychlejší mapování do aplikace - přes ORM půjde jen ten jeden sloupec který si pak v aplikaci rozložíte na jednotlivé bity. Indexy si naděláte jen nad těmi bity (nebo kombinacemi bitů) kde budou doopravdy potřeba, jen tam to bude brát víc místa (jak je u indexů obvyklé).

Podle mne je jednodušší použití databázové množiny. Tedy v případě neklíčových atributů.

BTW: K čemu ORM?

gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #55 kdy: 06. 09. 2016, 21:55:58 »
velmi jednoduchy priklad na vyuzitie bitovych operacii vo vyssich jazykoch...

nejaka vec ma 40 priznakov true/false a tych veci je 20 milionov riadkov v databaze
a truhlik tam spravil 20 stlpcov s hodnotou true/false  -  pri ceste ku service sa to kade-tade serializuje + EntityFramework a podobne takze ten overhead je masivny...
namiesto 1 stlpca s cislom (nie, nefiltruje sa podla tych priznakov, su pouzite cisto len pri zobrazeni)

Na to mu bude skvěle fungovat dotazování s využitím indexu.

No to samozřejmě bude, ale jen pokud udělá správný index (pomocí funkce která bude pracovat s příslušnými bity).

Tohle v mysql AFAIK nejde. Navíc tím moc místa neušetříš.

Ale jde, jen jak je již v MySQL tradicí tak se to dělá trochu jinak: http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

Pokud si nemůžete dovolit použít víc místa kvůli zrychlení přístupu k datům tak máte problém.

Co mi to přinese oproti separátním sloupcům?

Rychlejší mapování do aplikace - přes ORM půjde jen ten jeden sloupec který si pak v aplikaci rozložíte na jednotlivé bity. Indexy si naděláte jen nad těmi bity (nebo kombinacemi bitů) kde budou doopravdy potřeba, jen tam to bude brát víc místa (jak je u indexů obvyklé).

máš pravdu. V některých případech to asi bude lepší.

gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #56 kdy: 06. 09. 2016, 22:04:58 »
Ale jde, jen jak je již v MySQL tradicí tak se to dělá trochu jinak: http://mysqlserverteam.com/generated-columns-in-mysql-5-7-5/

Pokud si nemůžete dovolit použít víc místa kvůli zrychlení přístupu k datům tak máte problém.

Co mi to přinese oproti separátním sloupcům?

Rychlejší mapování do aplikace - přes ORM půjde jen ten jeden sloupec který si pak v aplikaci rozložíte na jednotlivé bity. Indexy si naděláte jen nad těmi bity (nebo kombinacemi bitů) kde budou doopravdy potřeba, jen tam to bude brát víc místa (jak je u indexů obvyklé).

Podle mne je jednodušší použití databázové množiny. Tedy v případě neklíčových atributů.

BTW: K čemu ORM?

Řekl bych, že množina se ukládá stejně a snáz se používá. Opravdu je to lepší a nemusím řešit bitové operace.

javaman ((

Re:Bitové operace ve vyšších jazycích
« Odpověď #57 kdy: 06. 09. 2016, 22:07:48 »
BTW: K čemu ORM?

Jak jinak bys to chtěl automaticky mapovat?

gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #58 kdy: 06. 09. 2016, 22:16:47 »
BTW: K čemu ORM?

Jak jinak bys to chtěl automaticky mapovat?

Mapovat co? Já používám ORM hlavně abych nemusel stále dokola psát ty stejné podmínky joinů.

javaman ((

Re:Bitové operace ve vyšších jazycích
« Odpověď #59 kdy: 06. 09. 2016, 22:20:25 »
Tak máš objekty a vůbec tě nezajímá, že je to v DB. Nemyslím doslova, ale skoro všechen kód už byl napsaný, takže máš jen modely a pár detailů. Vše ostatní zařídí někdo za tebe. Na složitější věci to není tak růžové, ale ty většina lidí stejně nikdy dělat nebude.