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

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

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

13 ответов

5 просмотров

А что делает метод 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) с последующим сравнения типа со строкой - вы получите разницу в миллион раз

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
62
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
Карта сайта