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

Всем привет! ребята подскажите пжт. Вопрос по CGO. У меня получилось выяснить

почему cgo медленее чем нативный go.
Вводная:
Написал функцию на Си:
1) фибоначчи (рекурсивно)
2) сложение
Написал функцию на Го:
1) фибоначчи (рекурсивно)
2) сложение

Делаю между ними сравнение по бенчмаркам.
Выясняю что сложение в си в сравнении со сложением с го - работает медленее (и понятно почему - переключение рантаймов/ffi ...).
Выясняю что фибоначчи в си в сравнеии с фибоначчи в го - работает быстрее (и не понятно почему ... ).

Вопрос. Почему в примере с функцией фибоначчи - враппер cgo работает быстрее?

Подскажите пжт!

5 ответов

18 просмотров
Rouc4- Автор вопроса

> Вопрос. Почему в примере с функцией фибоначчи - враппер cgo работает быстрее? Хотя по сути в первом и во втором случае идет вызов си кода через *.so/*.dylib

Моя единственная идея – в Go делается больше работы на входе и выходе из функции: переключение на скедулере, пролог для defer и так далее. Попробуйте сделать без рекурсии и сравнить.

А ты возьми числодробилку. И может оказаться, что с CGO работает быстрее https://github.com/RPG-18/wasmer-go-assemblyscript

Alexey Palazhchenko
Моя единственная идея – в Go делается больше работ...

Ну да, ffi cost. Видел очевидные велосипеды где это амортизируют на жирный батч.

как минимум по этому докладу можно сделать вывод, что работа с GC в GO добавляет проблем, но это не ваш кейс. https://www.youtube.com/watch?v=bdx8W_gxS3E

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

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

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Хтось використовував Vapor на Windows?
Jaroshevskii
15
Какое виндузовое сообщение приходит TTabSheet, что риэлайняться контролы на нем, даже у которых парент другой? Ситуация: открываю форму - кнопок нет, перелистываю на другой т...
Катерина Свиридова
7
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
Карта сайта