[*]Оптимизация кода

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Jes, 10 Apr 2008.

  1. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    Предлагаю создать довольно интересный топ (имхо) .
    Например :
    Один выкладывает небольшой(!)(верный) кусок кода (5-6 сток , не больше)
    остальные дают советы по оптимизации данного участка (подробно аргументируя) ...
    Суть - максимально оптимизировать код не только в сторону быстродействия но и универсальности ...
    Цель : Взаимное приобретение опыта , и польза для разела

    Например :

    Jes: выкладывает код :

    if( a == true )
    {
    c = b;
    }​

    ему отвечают :
    удобнее писать по другому <как><почему , для чего> , добавить что-то ... дабы увеличить стабильность / присечь возможные ошибки / и т п​

    Думаю , 'читателям' было бы довольно интересно как услышать полезные советы , так и самим блеснуть знаниями ...
    активные авторы плюсуются +
     
    #1 Jes, 10 Apr 2008
    Last edited: 10 Apr 2008
    5 people like this.
  2. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    А можно что нить на Делфи?
    Я бы тоже поучаствовал!
     
  3. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    Язык - любой
    ->конечно можно :)
     
    2 people like this.
  4. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    >>Один выкладывает небольшой(!)(верный) кусок кода (5-6 сток , не больше)

    оптимизация уровня кода языка высокого уровня настолько ничтожна по сравнению с возможной переработкой алгоритма суть которого на 6 строчках не поместиться. ни о чем короче говоря, я уж не говорю о том, что оптимизировать элементарные операторы высокого уровня просто не нужно.. пишите сразу на ассемблере учитывая конкретные особенности архитектуры процессора и вообще машины, но это не тема для античата.
     
  5. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Можно 20-30строк:)
     
  6. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    переменная A хоть как вернёт правду. Если ты этим хотел вернуть именно правду с целого числа, то проще
    if (a) {c=b;} - довольно глупая конструкция.
     
    1 person likes this.
  7. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    это пример , я имею ввиду не "оптимизацию общего синтаксиса" а про оптимизацию конкретных приёмов ...
     
  8. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    >> это пример , я имею ввиду не "оптимизацию общего синтаксиса" а про оптимизацию конкретных приёмов ...
    Ну так давай не пример а нормальную задачу:)
     
    1 person likes this.
  9. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Оптимизация нужна только там, где она нужна. А это определяется профайлером.

    Оптимизация других участков вредна, т.к. приводит к ухудшению читабельности кода и в итоге мы получим код быстрее на пару процентов, но на тысячи процентов сложнее в поддержке.
     
    1 person likes this.
  10. KSoniX

    KSoniX Elder - Старейшина

    Joined:
    17 Jan 2008
    Messages:
    94
    Likes Received:
    12
    Reputations:
    1
    вот код
    он читает из файла proxy.cfg можна ли как нибуть подругому и чтобы работал быстрее если proxy.cfg многа записи
     
  11. zythar

    zythar Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    самые быстрые способмы это имхо системные вызовы. в никсах для чтения есть системный вызов read. аналог в винде - хз

    имею ввиду что read в винде не системный вызов кажется
     
  12. KindEcstasy

    KindEcstasy Banned

    Joined:
    30 Sep 2006
    Messages:
    105
    Likes Received:
    64
    Reputations:
    54
    Ksonix. У тебя тут нечего оптимизировать по большому счёту разве что только на ассемблер переписать этот кусок. кстати. сейчас нету компилятора сишного. просто хотелось бы посмотреть как он атой в асм переведёт (всмысле мусорности кода). Если руками его написать на асме получиться примерно вотт ак:

    Code:
    
    push ebx
         xor ebx, ebx
      a3: lodsb
         cmp al, '9'
         ja a1
         cmp al, '0'
         jb err
         sub al, '0'
         jmp a4
      a1: cmp al, 'A'
         jb err
         cmp al, 'F'
         ja a2
         sub al, 'A'-10
         jmp a4
      a2: cmp al, 'a'
         jb err
         cmp al, 'f'
         ja err
         sub al, 'a'-10
      a4: shl ebx, 4
         or bl, al
         loop a3
      err:
         mov eax, ebx
         pop ebx
         ret
    
    ито я сомневаюсь что это супер-код всмысле короткости. может кто и короче знает. в любом случае, если тебе KSoniX переписать кусок на асм и если вышепреведённый код короче генерируемого компилером - то ты можешь выкроить парочку другую байт или мож даже и килобайт если компилятор ужасен в плане оптимизации. А раз код меньше по обьёму то скорее всего работать он будет немного побыстрее...

    короче кому не лень посмотреть код функции атой (сишной) - киньте сюды плиз )
     
  13. KSoniX

    KSoniX Elder - Старейшина

    Joined:
    17 Jan 2008
    Messages:
    94
    Likes Received:
    12
    Reputations:
    1
    вот как в файле хранится
    zythar GetPrivateProfileStringA() функция это и ест системный SDK
     
  14. KSoniX

    KSoniX Elder - Старейшина

    Joined:
    17 Jan 2008
    Messages:
    94
    Likes Received:
    12
    Reputations:
    1
    вот еже код
    а этод код он работает с сокетами и скачивает файл
     
    #14 KSoniX, 11 Apr 2008
    Last edited: 11 Apr 2008
    1 person likes this.
  15. FoX's

    FoX's Дохлый

    Joined:
    26 Dec 2004
    Messages:
    169
    Likes Received:
    29
    Reputations:
    0
    -------
    PHP:
    DWORD readcfg(charparamcharbufout,DWORD bufsize){
        return 
    GetPrivateProfileStringA("Proxy conf",param,NULL,bufout,bufsize,"c:\\proxy.cfg");
    }
    и читай...
    PHP:
     char buf[256];

     
    readcfg("host",buf,255);
     
    readcfg("port",buf,255);
    можно еще заранее выделить буфер и тд.
    или создать массив ключей. и циклом их
     
    #15 FoX's, 11 Apr 2008
    Last edited: 11 Apr 2008
  16. KSoniX

    KSoniX Elder - Старейшина

    Joined:
    17 Jan 2008
    Messages:
    94
    Likes Received:
    12
    Reputations:
    1
    FoX's так еше медленные у меня так и так массив чаров
     
    #16 KSoniX, 11 Apr 2008
    Last edited: 11 Apr 2008
  17. FoX's

    FoX's Дохлый

    Joined:
    26 Dec 2004
    Messages:
    169
    Likes Received:
    29
    Reputations:
    0
    он импортирует ее из msvcrt.dll. Там примерно тоже самое. Быстрее конечно ее на асме отдельно. +)
     
  18. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Если изначально в теме разумное зерно (азарт :) ) прослеживался, то вытекла она в чёрти что...
     
  19. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    Zaco, nerezus всё четко сказали по теме. Jes, объясни на примере(законченном примере) что ты имеешь ввиду. А так nerezus не так давно в одной теме давал ссылку на статью по оптимизации человека, который чуть ли не жизнь этому посвятил. Очень интересная статья. Вроде в теме про php была. 5-6 строк всё же очень мало. Лучше побольше какие-нибудь исходники публиковать хорошо оформленные, написанные в хорошем стиле. Можно открыть какую-нибудь тему про коммерческое программирование. Думаю на ачате есть люди которым есть что сказать на эту тему. Плюс людям будет интересно узнать что программирование это не только сплоенты и вирусы))
     
    3 people like this.
  20. KSoniX

    KSoniX Elder - Старейшина

    Joined:
    17 Jan 2008
    Messages:
    94
    Likes Received:
    12
    Reputations:
    1
    точна я согласен стобой Forcer на 100%