<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Можн както ускорить вызо C из Go?</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10412.html</link>
    <description>Пример надуманный но все же.&lt;br&gt;&lt;br&gt;Rust:&lt;br&gt;rustc -C opt-level=3 -l static=num -L. main.rs&lt;br&gt;real    0m2.168s&lt;br&gt;user    0m2.163s&lt;br&gt;sys     0m0.005s&lt;br&gt;&lt;br&gt;Go:&lt;br&gt;go build main.go &lt;br&gt;real    1m18.388s&lt;br&gt;user    1m18.342s&lt;br&gt;sys     0m0.092s&lt;br&gt;&lt;br&gt;&lt;br&gt;//num.c&lt;br&gt;int print_num(int num) &#123;&lt;br&gt;    return num * 2;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;//main.go&lt;br&gt;func main() &#123;&lt;br&gt;        res := 0&lt;br&gt;        for i := 0; i &amp;lt; 1000_000_000; i++ &#123;&lt;br&gt;                res = int(C.print_num(C.int(i)))&lt;br&gt;        &#125;&lt;br&gt;        fmt.Println(res)&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;//main.rs&lt;br&gt;fn main() &#123;&lt;br&gt;    let mut x: i32 = 0;&lt;br&gt;    for i in 0..1000_000_000 &#123;&lt;br&gt;        unsafe &#123;&lt;br&gt;            x = print_num(i);&lt;br&gt;        &#125;&lt;br&gt;    &#125;&lt;br&gt;    println!(&quot;&#123;&#125;&quot;, x);&lt;br&gt;&#125;&lt;br&gt;</description>

<item>
    <title>Можн както ускорить вызо C из Go? (Брат Анон)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10412.html#7</link>
    <pubDate>Mon, 07 Nov 2022 09:34:27 GMT</pubDate>
    <description>&amp;gt; В целом понятно почему так медленно, думал может кто подскажет как ускорить. &lt;br&gt;&lt;br&gt;Нет, это никак не ускоряется. Вызовы в Си чудовищно дорогие. Меньше дёргайте Си.&lt;br&gt;&lt;br&gt;&amp;gt; Былобы не плохо, например для использования rocksdb &lt;br&gt;&lt;br&gt;Передавайте жирные блобы.&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; Зачем инклюдить в исходник С-код?&lt;br&gt;&amp;gt; Тут мне сложно ответить так как я не понял вопрос, просто выше &lt;br&gt;&amp;gt; опущены некоторые моменты по компиляции и линковке.&lt;br&gt;&lt;br&gt;Вы не поняли вопроса. Зачем вам в Го -- Си? Вы ломаете безопасность типов и инварианты памяти.&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; С-код компилируется gcc в обектный файл а потом линкуется &lt;br&gt;&amp;gt; с скомпилированым кодом go или rust. Инклудов там никаких нет, можно было &lt;br&gt;&amp;gt; слинковать уже с существующей в системе библиотекой, но мне так проще &lt;br&gt;&amp;gt; было сделать.&lt;br&gt;&lt;br&gt;Вопрос не про линковку. Вопрос про то, что Си для Го -- совершенно неродной.&lt;br&gt;Вы пытаетесь есть суп вилкой.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Можн както ускорить вызо C из Go? (Bobik)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10412.html#6</link>
    <pubDate>Sat, 19 Feb 2022 21:55:53 GMT</pubDate>
    <description>&amp;gt; Посмотрите на хабре статью по теме.&lt;br&gt;&amp;gt; Есть технические причины почему вызов С функций из Go такой медленный. И &lt;br&gt;&amp;gt; похоже это не лечится.&lt;br&gt;&lt;br&gt;В целом понятно почему так медленно, думал может кто подскажет как ускорить.&lt;br&gt;&lt;br&gt;&amp;gt;Да и надо ли?&lt;br&gt;&lt;br&gt;Былобы не плохо, например для использования rocksdb&lt;br&gt;&lt;br&gt;&amp;gt; Зачем инклюдить в исходник С-код?&lt;br&gt;&lt;br&gt;Тут мне сложно ответить так как я не понял вопрос, просто выше опущены некоторые моменты по компиляции и линковке.&lt;br&gt;&lt;br&gt;С-код компилируется gcc в обектный файл а потом линкуется &lt;br&gt;с скомпилированым кодом go или rust. Инклудов там никаких нет, можно было слинковать уже с существующей в системе библиотекой, но мне так проще было сделать.&lt;br&gt;</description>
</item>

<item>
    <title>Можн както ускорить вызо C из Go? (ыы)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10412.html#5</link>
    <pubDate>Sat, 19 Feb 2022 19:09:33 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Это код на rust, он тут как &quot;еталон&quot; по скорости вызова c/c++ &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; кода из других языков.&lt;br&gt;&amp;gt;&amp;gt; А это - &lt;br&gt;&amp;gt;&amp;gt; go build &lt;br&gt;&amp;gt;&amp;gt; процесс компиляции а не время рунтайма &lt;br&gt;&amp;gt;&amp;gt; вы сравниваете время компиляции?&lt;br&gt;&amp;gt; Сравниваю время выполнения, &quot;go build main.go&quot; пример как компилировал, возможно есть флаги &lt;br&gt;&amp;gt; оптимизации которые ускорят. В интернете пишут что gccgo может собрать более &lt;br&gt;&amp;gt; быстрый бинарник но не в етом случае, у меня получилось в &lt;br&gt;&amp;gt; разы хуже.&lt;br&gt;&lt;br&gt;Посмотрите на хабре статью по теме.&lt;br&gt;Есть технические причины почему вызов С функций из Go такой медленный. И похоже это не лечится. Да и надо ли?&lt;br&gt;Зачем инклюдить в исходник С-код?&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Можн както ускорить вызо C из Go? (Bobik)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10412.html#4</link>
    <pubDate>Sat, 19 Feb 2022 17:25:00 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;     println!(&quot;&#123;&#125;&quot;, x); &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &#125; &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; go build main.go &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; main.go:2:1: expected &apos;package&apos;, found &apos;func&apos; &lt;br&gt;&amp;gt;&amp;gt; Это код на rust, он тут как &quot;еталон&quot; по скорости вызова c/c++ &lt;br&gt;&amp;gt;&amp;gt; кода из других языков.&lt;br&gt;&amp;gt; А это - &lt;br&gt;&amp;gt; go build &lt;br&gt;&amp;gt; процесс компиляции а не время рунтайма &lt;br&gt;&amp;gt; вы сравниваете время компиляции?&lt;br&gt;&lt;br&gt;Сравниваю время выполнения, &quot;go build main.go&quot; пример как компилировал, возможно есть флаги оптимизации которые ускорят. В интернете пишут что gccgo может собрать более быстрый бинарник но не в етом случае, у меня получилось в разы хуже.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Можн както ускорить вызо C из Go? (ыы)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10412.html#3</link>
    <pubDate>Sat, 19 Feb 2022 15:44:59 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; x = print_num(i); &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;         &#125; &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     &#125; &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;     println!(&quot;&#123;&#125;&quot;, x); &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &#125; &lt;br&gt;&amp;gt;&amp;gt; go build main.go &lt;br&gt;&amp;gt;&amp;gt; main.go:2:1: expected &apos;package&apos;, found &apos;func&apos; &lt;br&gt;&amp;gt; Это код на rust, он тут как &quot;еталон&quot; по скорости вызова c/c++ &lt;br&gt;&amp;gt; кода из других языков.&lt;br&gt;&lt;br&gt;А это -&lt;br&gt;go build &lt;br&gt;процесс компиляции а не время рунтайма&lt;br&gt;вы сравниваете время компиляции?&lt;br&gt;</description>
</item>

<item>
    <title>Можн както ускорить вызо C из Go? (Bobik)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10412.html#2</link>
    <pubDate>Sat, 19 Feb 2022 13:22:21 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;     for i in 0..1000_000_000 &#123; &lt;br&gt;&amp;gt;&amp;gt;         unsafe &#123; &lt;br&gt;&amp;gt;&amp;gt; &lt;br&gt;&amp;gt;&amp;gt; x = print_num(i); &lt;br&gt;&amp;gt;&amp;gt;         &#125; &lt;br&gt;&amp;gt;&amp;gt;     &#125; &lt;br&gt;&amp;gt;&amp;gt;     println!(&quot;&#123;&#125;&quot;, x); &lt;br&gt;&amp;gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; go build main.go &lt;br&gt;&amp;gt; main.go:2:1: expected &apos;package&apos;, found &apos;func&apos; &lt;br&gt;&lt;br&gt;Это код на rust, он тут как &quot;еталон&quot; по скорости вызова c/c++ кода из других языков.&lt;br&gt;</description>
</item>

<item>
    <title>Можн както ускорить вызо C из Go? (ыы)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/10412.html#1</link>
    <pubDate>Sat, 19 Feb 2022 12:43:29 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; fn main() &#123; &lt;br&gt;&amp;gt;     let mut x: i32 = 0; &lt;br&gt;&amp;gt;     for i in 0..1000_000_000 &#123; &lt;br&gt;&amp;gt;         unsafe &#123; &lt;br&gt;&amp;gt;             &lt;br&gt;&amp;gt; x = print_num(i); &lt;br&gt;&amp;gt;         &#125; &lt;br&gt;&amp;gt;     &#125; &lt;br&gt;&amp;gt;     println!(&quot;&#123;&#125;&quot;, x); &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&lt;br&gt;go build main.go&lt;br&gt;main.go:2:1: expected &apos;package&apos;, found &apos;func&apos;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
