Нужны ли маленькие функции?

Discussion in 'WASM.HEAP' started by _proteus, Oct 10, 2008.

  1. _proteus

    _proteus Member

    Blog Posts:
    0
    Joined:
    Mar 25, 2008
    Messages:
    192
    Location:
    Казань
    Уважаемые, как вы считаете, насколько целесообразно выделять участки кода, имеющие размер 2-3 строки, в отдельную функцию, если вызываться она будет максимум в 1-2 местах? Так ли важен "черный ящик", который отладил и забыл?
     
  2. DEEP

    DEEP Андрей

    Blog Posts:
    0
    Joined:
    Apr 27, 2008
    Messages:
    491
    Location:
    г. Владимир
    Если не более чем в 4-5 местах - то нецелесообразно. Дёргать регистры/стэк, делать лишние джампы... нет, не надо. Вот когда число уникальных вызовов дойдёт хотя бы до десяти - тогда да.
     
  3. _basmp_

    _basmp_ New Member

    Blog Posts:
    0
    Joined:
    Jul 10, 2005
    Messages:
    2,939
    _proteus
    если это не эксперимент или спецучасток, то по функциям, файлам разделяют для понятности. Компилер потом все хорошо проинлайнит сам.
     
  4. _proteus

    _proteus Member

    Blog Posts:
    0
    Joined:
    Mar 25, 2008
    Messages:
    192
    Location:
    Казань
    Т.е. затраты, озвученные DЕЕР'ом, исчезнут?
     
  5. _basmp_

    _basmp_ New Member

    Blog Posts:
    0
    Joined:
    Jul 10, 2005
    Messages:
    2,939
    _proteus
    а что стоит написать демку, скомпилить с оптимизацией, открыть в дебугере и посмотреть?
    В сложных проектах понимабельность очень важна.
     
  6. DEEP

    DEEP Андрей

    Blog Posts:
    0
    Joined:
    Apr 27, 2008
    Messages:
    491
    Location:
    г. Владимир
    ЗЫ. А может быть, целесообразнее использовать макросы?
    Это избавляет как от необходимости забивать стэк и выполнять CALL/RETN, так и от раздумий "а нужно ли".
    Ответ: нужно!
    =)
     
  7. Barbos

    Barbos Slavon

    Blog Posts:
    0
    Joined:
    Nov 13, 2007
    Messages:
    280
    Location:
    Kharkov
    конешно целесообразней, но компиллер действительно может оптимизировать код.
     
  8. _basmp_

    _basmp_ New Member

    Blog Posts:
    0
    Joined:
    Jul 10, 2005
    Messages:
    2,939
    DEEP
    в макросах нет контроля типов, если вы используете сложный макрос, то в виде функи при частом его употреблении компилер его инлайнить не будет. И еще при дебуганьи, даже без оптимизации на месте макроса будет некая куча кода.
    Странно, что вы проги пишете, а в дебугер не заглядываете. Что все сразу супер? Или глюком больше, глюком меньше?
     
  9. DEEP

    DEEP Андрей

    Blog Posts:
    0
    Joined:
    Apr 27, 2008
    Messages:
    491
    Location:
    г. Владимир
    Именно. Только у нас не _куча_ кода, а всего пара строчек. Это две большие разницы.
    А в отладчик заглядывать приходится часто. Только я никогда не использую самописных макросов - пока жизнь не заставляет. Однако об общих принципах их работы я (надеюсь) осведомлён.
     
  10. UbIvItS

    UbIvItS Well-Known Member

    Blog Posts:
    0
    Joined:
    Jan 5, 2007
    Messages:
    6,242
    не везде, но есть чёткая возможность определять функу как инлайн.