1. C# / Говнокод #7900

    +128

    1. 1
    2. 2
    3. 3
    string a = 'a'+""+'b';
    string b = ""+'a'+'b';
    string c = 'a'+'b'+"";

    никогда не воспроизводи говнокод по памяти

    Запостил: Ccik, 19 Сентября 2011

    Комментарии (10) RSS

    • ЯННП
      Ответить
    • Плюсанул. Не потому что говнокод, а чтобы не утонуло.
      Вопрос слияния строк весьма любопытен. Замерять просто время выполнения разных способов не интересно, но тут как раз на рсдн проскочил код измерения потребляемой памяти и количества вызовов сборщика мусора. Нагло спёр его и воспользовался.
      Пример смотрим тут: http://pastebin.com/7TfTrsZ3
      Абсолютно ничего сложного, но длинновато.
      Здесь результаты:
      stringAddition:
      Elapsed: 00.2273 s,  MemDelta:  246.51 KB,  GC count: 289
      
      charToString:
      Elapsed: 00.1581 s,  MemDelta:   99.12 KB,  GC count: 198
      
      string.Concat:
      Elapsed: 00.2186 s,  MemDelta:  245.67 KB,  GC count: 289
      
      string.Format:
      Elapsed: 00.5973 s,  MemDelta:  239.50 KB,  GC count: 701
      
      StringBuilder:
      Elapsed: 00.1866 s,  MemDelta:  260.29 KB,  GC count: 350
      Ответить
      • весьма интересные циферки выходят...
        Ответить
    • Наверно, вместо пустых строк когда-то было что-то интересное)
      Ответить
    • Char + Char = int; И почему так?
      Ответить
      • хз. каюсь, сам часто пользуюсь +"" для каста чара к строке. так сам очень был удивлен, когда программа упала =)
        Ответить
      • т.к. для чара не определен operator +() и потому он каститса к инту и так уже и складывается.
        Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий