Вызовы Си-шного кода из #
Go обходятся крайне дорого, это и по замерам сродни
таких тестов и по итогам реальной работы.
Как минимум в 25-26 раз дороже (а порой и в 43), чем внутри Go-шного кода вызвать Go-шную функцию.
А если вызвать Си-шный код из Go, а потом внутри этого Си-шного кода на время дёрнуть Go-шную функцию (механизм callback'ов), то это всего в 9-15 раз медленее, чем там же вызвать Си-шную функцию в пределах того же Си-шного кода.
Сказанное замерено в контексте и ver.1.21 и ver.1.22 #
Golang.
Следует забыть о высоконагруженных и производительных решениях, если они постоянно вынуждены дёргать из Go-шного кода различные Си-шные функции библиотек.
Причина поста в том, что в #
Go реально оптимизированы вызовы Си-шного кода лишь в контексте различных системных вызовов — которые #
syscall и выполняются посредством rawSyscallNoError.
А во всех остальных случаях механизм #
cgo выполняет много работы с большим количеством накладных расходов при подготовке передачи управления в Си-шный код.
#
cgo #
golang #
programming #
softwaredevelopment #
softwaredev #
lang_ru @
Russia