d2jsp
Log InRegister
d2jsp Forums > Off-Topic > International > Magyar > Mekprogramozzuk Topic
Prev16162636465249Next
Add Reply New Topic New Poll
Member
Posts: 53,925
Joined: Apr 15 2007
Gold: 11,500.00
Trader: Trusted
Oct 24 2014 05:41pm
> egyetlen 3rd partyt használsz
> arcod amikor annyira erős az optimalizálás már, hogy a cpu idő 78.2%-át a kibaszott 40 soros 3rd party class eszi meg (expression-t számít ki, pl "3 * 6 - (2 *3)")
na holnap kukázom is, mindig megbánom..
Member
Posts: 4,795
Joined: Apr 26 2007
Gold: 289.00
Oct 25 2014 09:30am
Quote (Anarkin @ 25 Oct 2014 00:41)
> egyetlen 3rd partyt használsz
> arcod amikor annyira erős az optimalizálás már, hogy a cpu idő 78.2%-át a kibaszott 40 soros 3rd party class eszi meg (expression-t számít ki, pl "3 * 6 - (2 *3)")
na holnap kukázom is, mindig megbánom..


A C# szépségei. :rofl:
A jó öreg C-vel nem lenne ilyen problémád. :D
Member
Posts: 42,999
Joined: Jul 16 2006
Gold: 1.00
Oct 25 2014 09:38am
Faszomat ebbe a kibaszott vhdlbe.

Semmi sem akar működni, de legalább a próbálgatás is olyan, hogy minden egyes fordítás (vagyis bitstream generálás pontosabban) ilyen 3 perc. Anyádat, te köcsög szar.

This post was edited by CyberPunk666 on Oct 25 2014 09:39am
Member
Posts: 35,964
Joined: Dec 27 2007
Gold: 0.00
Oct 25 2014 09:41am
Quote (Anarkin @ Oct 24 2014 11:41pm)
> egyetlen 3rd partyt használsz
> arcod amikor annyira erős az optimalizálás már, hogy a cpu idő 78.2%-át a kibaszott 40 soros 3rd party class eszi meg (expression-t számít ki, pl "3 * 6 - (2 *3)")
na holnap kukázom is, mindig megbánom..


és ezt hogyan helyettesíted / optimalizálod?
Member
Posts: 53,925
Joined: Apr 15 2007
Gold: 11,500.00
Trader: Trusted
Oct 25 2014 09:45am
Quote (Jason89 @ 25 Oct 2014 16:30)
A C# szépségei. :rofl:
A jó öreg C-vel nem lenne ilyen problémád. :D


ott is majmok írják a 3rd partykat, nem látom a különbséget
amúgy .NET reference sourceba ha belenéz az ember, tele van unsafe code-al (kb ekvivalens sima C kóddal) a legtöbb fv ami "dolgozik" (pl egy sima Replace vagy Insert is)
Member
Posts: 35,964
Joined: Dec 27 2007
Gold: 0.00
Oct 25 2014 09:46am
btw igazán használhatnánk ezt a topicot ilyen coding dojonak
pl ha valami problémát/feladatot megoldasz egy szerinted tök ötletes/jó módon, akkor bepostolod azt a kódrészletet,
néhány szóban leírod hogy mi történik benne és miért így oldottad meg és szerinted ez miért jó, etc
Member
Posts: 4,795
Joined: Apr 26 2007
Gold: 289.00
Oct 25 2014 10:59am
Quote (xGurke @ 25 Oct 2014 16:46)
btw igazán használhatnánk ezt a topicot ilyen coding dojonak
pl ha valami problémát/feladatot megoldasz egy szerinted tök ötletes/jó módon, akkor bepostolod azt a kódrészletet,
néhány szóban leírod hogy mi történik benne és miért így oldottad meg és szerinted ez miért jó, etc


Jó ötlet, de ezzel az a bajom, hogy rendszerint nem egy ötsoros programrész az igazán ötletes dolog, hanem egy jóval magasabb szintű megoldás.

Erre példa ez:
Code

template<wt_u8 TYPE, wt_u8 FLAG>
class SectionImpl : public Section
{
public:
SectionImpl(const std::string & name, wt_u32 addr) : Section(name, addr) { }
virtual ~SectionImpl() { }
virtual wt_u8 GetSectionType() const { return TYPE; }
virtual wt_u8 GetSectionFlag() const { return FLAG; }
};


Alapvetően egy nagyon jó ötlet, de ezt elolvasva semmi értelme az egésznek.
Member
Posts: 35,964
Joined: Dec 27 2007
Gold: 0.00
Oct 25 2014 11:15am
Quote (Jason89 @ Oct 25 2014 04:59pm)
Jó ötlet, de ezzel az a bajom, hogy rendszerint nem egy ötsoros programrész az igazán ötletes dolog, hanem egy jóval magasabb szintű megoldás.

Erre példa ez:
Code
template<wt_u8 TYPE, wt_u8 FLAG>
class SectionImpl : public Section
{
public:
    SectionImpl(const std::string & name, wt_u32 addr) : Section(name, addr) { }
    virtual ~SectionImpl() { }
    virtual wt_u8 GetSectionType() const { return TYPE; }
    virtual wt_u8 GetSectionFlag() const { return FLAG; }
};


Alapvetően egy nagyon jó ötlet, de ezt elolvasva semmi értelme az egésznek.


nem mondtam, hogy nem lehet hosszabb hangvételű, én biztos el fogom olvasni mindet
Member
Posts: 53,925
Joined: Apr 15 2007
Gold: 11,500.00
Trader: Trusted
Oct 25 2014 12:11pm
Quote (xGurke @ 25 Oct 2014 16:41)
és ezt hogyan helyettesíted / optimalizálod?


az emberek szeretnek generikus dolgokat írni, közzétenni, stb
tényleg jó dolog, az én szakdogám is erről szól -- pluginelhető AI rendszer, problémákkal, keresésekkel, stb, akármilyen .net nyelven lehet írni őket (majd csinálok F#-os example-t is még decemberig)

csak hogy ha megnézzük, generikus = nem optimalizált
mert amikor nekünk szükségünk van valamire, akkor az feltehetőleg nem a világmindenség

pl nézzük az én példámat
"{GÉ} + ({HÁ} * 2)" szintű dolgokat akarok kifejezni

első megoldásként hozzányúlhatok egy for ciklushoz és replacelhetem a betűket (ez egyenlő lesz N darab KERESÉSSEL, M-szer)
utána pedig fogok egy Evaluator szarságot, valami 3rd party full-generikus puccos menő cuccot, ami megoldja nekem
működik, fasza, 10 perc volt, hagynám is így, ha mondjuk kliens oldalon lenne, és a UI-ről valaki 10 másodpercenként egyszer lefuttatná .. mindegy hogy 3 ms, vagy 250 ms
mi a baj? a replace, és hogy a 3rd party feltehetőleg a teljes univerzum megoldására fel van készítve, így Flexert használ, Parsert, minden szart amit tanultunk FONYA-ból, és ezek képesek megoldani a legkomplexebb nyelveket (lvl3 vagy mi)

második megoldásként mondhatom hogy kikapom dictionary-be hogy <G, 0>, <H, 7>, melyik hol van, megspróltam N keresést, jobbról balra (hogy ne baszódjanak el az indexek) behelyettesítem -> bumm 1500x gyorsabb lett (de tényleg xd)
utána keresek vagy írok valami 25 soros Stack-es megoldást, ami evaluálja a kifejezést, mit tudom én mint a lengyel formula (vmi ilyet fogok mindjárt csinálni)

mindig csak abban kell gondolkozni, hogy a kód 10%-a fut az idő 90%-ában (ez amúgy még szerintem 3/97-el is igaz lenne), ha nem az alkalmazás közepén lenne ez a kód és nem futna le mp-enként 400.000-szer, én se basztatnám ezt
legtöbb alkalmazásnál ráereszted a VS Análizátort a programra, és ha megnézed egy sor lesz ami vér vörös, a többi meg ilyen <0.1%, vagy 1%
talán a legjellemzőbb ilyen "hibák" a leggyakoribb higher order parancsok miatt vannak (replace, contains, exists, stb... mindegyik kurvára lineáris és senki nem gondol bele, hogy ezeket előre fel kéne dolgozni)
Member
Posts: 4,795
Joined: Apr 26 2007
Gold: 289.00
Oct 25 2014 12:16pm
Másik kedvenc megoldásom, de biztos láttatok már ilyet. Adott típusú elemek begyűjtése az AST-ből. Ebbe pl az a poén, hogy 1-4 darab típust tud gyűjteni, ráadásul úgy, hogy a gyűjtött elemek minden esetben gyerekei a B-nek. Note that, Visit(T1)-Visit(T4) nem feltétlenül virtuális függvény! Csak akkor, ha tényleg olyan típus, ami van az AST-ben. :)

Code

namespace wtc
{
namespace codegen
{

template<int N> struct dummy_type { };

template<typename B, bool dive, typename T1=B, typename T2=dummy_type<2>, typename T3=dummy_type<3>, typename T4=dummy_type<4> >
struct Selector : public wtast::AstVisitor
{
typedef std::set<B*> container_t;
typedef typename container_t::iterator iterator;
container_t result;
bool empty() const { return result.empty(); }
std::size_t size() const { return result.size(); }
iterator begin() { return result.begin(); }
iterator end() { return result.end(); }

Selector(wtast::AstNode* astnode) : wtast::AstVisitor() { astnode->Accept(this); }

bool Visit(T1* elem) { result.insert(elem); return dive; }
bool Visit(T2* elem) { result.insert(elem); return dive; }
bool Visit(T3* elem) { result.insert(elem); return dive; }
bool Visit(T4* elem) { result.insert(elem); return dive; }
};

} // codegen
} // wtc
Go Back To Magyar Topic List
Prev16162636465249Next
Add Reply New Topic New Poll