Минутка WTF-7: закрепляем
От: Sinix  
Дата: 26.04.16 19:39
Оценка: 4 (1)
Ну, раз так вяло пошло
Автор: Sinix
Дата: 25.04.16
— упростим ещщё.

        public enum SomeEnum { A, B, C }
        public struct MyStruct : IEquatable<MyStruct>, IComparable<MyStruct>
        {
            public SomeEnum MyField { get; }

            public MyStruct(SomeEnum myField)
            {
                MyField = myField;
            }

            public bool Equals(MyStruct other)
            {
                return MyField.Equals(other.MyField);
            }

            public int CompareTo(MyStruct other)
            {
                return other.MyField.CompareTo(MyField);
            }

            public override bool Equals(object obj)
            {
                return obj is MyStruct && Equals((MyStruct)obj);
            }

            public override int GetHashCode()
            {
                return MyField.GetHashCode();
            }
        }


Как всегда, вопрос стандартный: где я налажал и как с этим жить
В смысле, найти-поправить косяки в плане производительности. Желательно с пруфами в виде циферок, а то весь педагогический эффект пропадает

Просьбы тож стандартные:
1. Спойлеры — под кат!
2. Подключайтесь Не всё ж мне одному вопросы выдумывать
Отредактировано 07.01.2017 16:46 Sinix . Предыдущая версия .
минутка wtf
Re: Минутка WTF-7: закрепляем
От: rameel https://github.com/rsdn/CodeJam
Дата: 26.04.16 20:08
Оценка: 6 (1) +2
Здравствуйте, Sinix, Вы писали:

S>Как всегда, вопрос стандартный: где я налажал и как с этим жить


  Скрытый текст
Боксинг на вызовах Equals, CompareTo и GetHashCode. Компилятор шарпа при использовании численных операции с перечислениями приводит их к базовому типу. Кстати, это хорошо видно при генерации Expression.

Исправить соответственно просто: надо использовать либо приямые операции такие как +-&|, либо приводить их к базовому типу и вызывать уже соответствующие методы у них (Equals, CompareTo и GetHashCode)

MyStruct1: Elapsed: 74 ms, GC 0/1/2: 57/0/0
MyStruct2: Elapsed:  2 ms, GC 0/1/2:  0/0/0
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Минутка WTF-7: закрепляем
От: Sinix  
Дата: 26.04.16 20:14
Оценка:
Здравствуйте, rameel, Вы писали:

R>cut


Угу. И ещё один косяк остался. Чисто логический.
Re[3]: Минутка WTF-7: закрепляем
От: Lexey Россия  
Дата: 26.04.16 21:29
Оценка: 30 (2) +1
Здравствуйте, Sinix, Вы писали:

S>Угу. И ещё один косяк остался. Чисто логический.

  spoiler
Перевернутое сравнение в компараторе? Но, это ведь может быть и by design.
"Будь достоин победы" (c) 8th Wizard's rule.
Отредактировано 26.04.2016 21:31 Lexey . Предыдущая версия .
Re[4]: Минутка WTF-7: закрепляем
От: rameel https://github.com/rsdn/CodeJam
Дата: 26.04.16 22:16
Оценка:
Здравствуйте, Lexey, Вы писали:

S>>Угу. И ещё один косяк остался. Чисто логический.

L>
  spoiler
L>Перевернутое сравнение в компараторе? Но, это ведь может быть и by design.


  Скрытый текст
Я когда переписал MyStruct для проверки производительности на автомате исправил и первую и исправленную (MyStruct2) версию, мало ли где и как код набирался и с какими копипастами, и как-то не подумал, что это специально сделано
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.