Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Ar trebuii sa vindem imobiliarele...

Dupa renuntarea la aparat dentar

pelerinaj in Balcik

Noul format Jpegli iși propu...
 Dade, dade

Parola la lock screen

Deparazitare externa pisici fara ...

Seriale turcesti/coreene online H...
 Merita un Termostat Smart pentru ...

Sfat achizitie MTB Devron Riddle

Problema mare cu parintii= nervi ...

switch microtik
 Permis categoria B la 17 ani

Sfaturi pentru pregatirea de eval...

Crapaturi placa

cum imi accesez dosarul electroni...
 

Generator de sunete - optimizare consum resurse

- - - - -
  • Please log in to reply
37 replies to this topic

#19
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007
Ne arati si noua exact ce operatii sau ne tii in suspans?

#20
GabyF

GabyF

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 27.09.2006
E mult prea greu, codul e luuung, nu am cum.

Eu cred ca nu e asa de destept pe cat crezi tu, nici nu are cum sa stie daca anumite operatii aritmetice se fac de mai multe ori, ar insemna sa compileze de doua ori.

Nici operatii f simple vad ca nu reuseste sa optimizeze: https://godbolt.org/z/8zPK6n4Pe

Ce e dupa else if (cond==1) ar trebui sa ignore , nicidecum, consuma resurse complet inutil. Aspectul asta l-am observat si la un program test real, daca pun un switch lung care ar trebui sa iasa dupa prima conditie, programul consuma ca si cum ar trebui sa parcurga tot switch-ul...

Nu consuma CPU cat ar fi daca e doar prima conditie in cod ci mult mai mult, compileaza tot.

Edited by GabyF, 16 March 2023 - 22:52.


#21
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007
N-ai activat optimizarile

https://godbolt.org/z/n7Yj9nnGY

#22
GabyF

GabyF

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 27.09.2006
mdaaa... in calc meu cu /arch:SSE2 /fp:fast /EHsc /Ob2 /Oi /GS- /Ot /O2 la cod mult mai complex parcurge toate cazurile din switch chiar daca ar trebui sa iasa dupa prima conditie.

#23
GabyF

GabyF

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 27.09.2006
Uite la acest exemplu https://godbolt.org/z/38eeMvz74 la functia void Osc() , ar trebui sa ignore cazurile Triangle si Square si n-o face. Ar trebui sa calculeze ca si cum codul n-ar contine cazurile Triangle si Square. Risipa foarte mare si inutila de resurse. Evident face risipa de resurse si cand comut wave pe Triangle sau Square.

Nu gasesc nici-o optimizare care sa rezolve problema.

Si daca folosesc switch e la fel https://godbolt.org/z/zvjsqojnj

Edited by GabyF, 17 March 2023 - 10:55.


#24
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,443
  • Înscris: 10.08.2005
Sigur, ca el deja stie ce valoare ai pus pe phase.
Nici tu nu stii ce valoare are, dar o folosesti.

#25
GabyF

GabyF

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 27.09.2006
Te iei de niste aspecte irelevante si offtopic, de ce n-ai dat valoare zero la phase sa vezi daca schimba rezultatul ? Acel cod este un exemplu test sa cercetez pe unde se pierd resurse. Pentru informarea ta, orice valoare pt phase e ok avand in vedere ce urmaresc cu acest cod. Hai sa nu ne pierdem timpul inutil.

Edited by GabyF, 17 March 2023 - 11:36.


#26
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,443
  • Înscris: 10.08.2005
Ca sa ti le optimizeze asa cum vrei tu, sa-ti calculeze la compilare, atunci trebuie sa ti le faca constante, si valoarea trebuie sa existe.
In cazul tau phase nu are valoare, si ca atare nu poate fi considerata CONSTANTA.
Notiuni de baza, inainte sa te apuci de "optimizari".

fix cazul in care tu vrei sa-ti precalculeze prima ramura are o chestie nedefinta.

Edited by MarianG, 17 March 2023 - 11:43.


#27
GabyF

GabyF

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 27.09.2006
Te rog sa incheiem discutiile neconstructive, ti-am spus, da valoare zero si vezi rezultatul - asa afli daca sti ceva...

Tu nu vrei sa ajuti, vrei sa arati cat de "multe" sti...

Edited by GabyF, 17 March 2023 - 11:52.


#28
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,443
  • Înscris: 10.08.2005
ai dat tu valoare zero direct in structura

ce te asteptai ?
sa-ti ignore codul scris ?

si cand nu ai zero ce faci? Compilezi din nou cu noua valoare ?

#29
GabyF

GabyF

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 27.09.2006
Faci confuzii elementare, functia Osc nu verifica valoarea phase in switch (if) ci valoare wave. Nu-ti mai raspund!

Astept opiniile celor care chiar cunosc C++

Edited by GabyF, 17 March 2023 - 11:56.


#30
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,443
  • Înscris: 10.08.2005
Dar se foloseste de valoarea ei, si daca ai avea o valoare constanta poate ar resusi sa-ti optimizeze ceva.

#31
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007
Clang e mai destept si-ti elimina structura cu totul

https://godbolt.org/z/87Gzzr6hn

#32
GabyF

GabyF

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 27.09.2006
Nu inteleg ce face, ar trebui sa printeze o valoare calculata.

#33
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,443
  • Înscris: 10.08.2005
Attached File  Screenshot 2023-03-18 at 09-04-47 Compiler Explorer - C (x86-64 clang 15.0.0).png   94.26K   6 downloads

#34
GabyF

GabyF

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 27.09.2006
Da, acum am vazut, nu scrie ca apeleaza functia Osc decat daca ii scot optimizarea. Executa aceleasi operatii si daca scot din cod variantele Triangle si Square, deci face ceea ce e normal. Vad ca si GCC stie sa faca asta, numai microsoft e ciudat...

Poate stie cineva cum fac compilatorul microsoft sa nu mai calculeze partile de cod care nu indeplinesc conditiile puse !? Poate este vreo optimizare care imi scapa mie...

As vrea sa lucrez in continuare pe msvc pentru ca are alte calitati.

Edited by GabyF, 18 March 2023 - 09:39.


#35
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007
Poti folosi clang usor din Visual Studio

https://learn.micros...d?view=msvc-170

#36
GabyF

GabyF

    Junior Member

  • Grup: Members
  • Posts: 235
  • Înscris: 27.09.2006
Folosesc in primul rand CodeBlocks, deja am testat cu GCC, probabil Clang da rezultate similare.

Chiar cu problema asta, rezultatul e mai bun cu MSVC decat GCC, consuma mai putin CPU, timpul de compilare e mai mic si executabilul mai mic ca dimensiuni.

Edited by GabyF, 18 March 2023 - 11:30.


Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate