170 похожих чатов

У меня есть объекты у которых есть метод Draw и

/ или Logic.
Как покрасивее сделать.
Так как будет 2 цикла. Один для Draw другой для Logic.
Подумываю просто все пихать в пустой интерфейс и
if myObj, ok := obj.(interface{methodName()}); ok {
myObj.methodName()
}
Но думаю не лучшее решение.
Ваши идеи?

13 ответов

16 просмотров

А что делает метод Logic?

Re- Автор вопроса
Ruslan
А что делает метод Logic?

Отвечает за логику, математику и.т.д. если это нужно.

Вы экономите проходы по циклу, которые ничего не стоят, при этом кастите рефлексией, которая не бесплатна.

Re- Автор вопроса

по этому я и спросил, какие есть еще варианты. Мне на ум пришло только использовать 2 хранилища и синхронизировать их.

Re
по этому я и спросил, какие есть еще варианты. Мне...

Так кода нет с циклами, кинули бы всю функции на плейграунд

https://go.dev/play/p/bjr1Q7YK2Yo у кого-то стырил код go test -bench=. -benchmem goos: darwin goarch: arm64 BenchmarkAppendNativeTypeAssertion-10 11139708 107.1 ns/op 64 B/op 4 allocs/op BenchmarkAppendReflectionTypeAssertion-10 15626779 76.33 ns/op 56 B/op 3 allocs/op

Artur Karapetov
https://go.dev/play/p/bjr1Q7YK2Yo у кого-то стыри...

Когда тырите код - его стоит смотреть. 1. Разное количество аллокаций. Из-за того что к строке в TA приводят через fmt (огонь код). Если убрать его - то сразу видно превосходство ТА 2. При обычном ТА не будет никакого свич тайпа по всем типам, в примере с которой начался сабж было приведение у известному заранее интерфейсу. При этом, чем больше значений в свич тайпе, тем медленнее код. В примере что вы увидели это может увидеть не количестве повторений кода, но не на ns/op т.к львиная доля бенча - это время на аллокации.

Artur Karapetov
обновленный код ждать?

Не сегодня, написал же, что с телефона(

Александр Костюченко
Не сегодня, написал же, что с телефона(

убрал из кода то что вы указали (вроде бы, проверьте еще раз, может чего упустил) https://go.dev/play/p/bN90BVDTRgq BenchmarkAppendNativeTypeAssertion-10 22378770 48.43 ns/op 56 B/op 3 allocs/op BenchmarkAppendReflectionTypeAssertion-10 20350164 58.68 ns/op 56 B/op 3 allocs/op

Artur Karapetov
убрал из кода то что вы указали (вроде бы, проверь...

И? ТА быстрее, причем намного. Как уже и писал выше - сабж начался с приведения типа к одному известному заранее. Если вы напишите data, ok := v.(string) и data :=reflect.ValueOf(v) с последующим сравнения типа со строкой - вы получите разницу в миллион раз

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта