<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>optimization on Maxgio&#39;s blog</title>
    <link>https://blog.maxgio.me/tags/optimization/</link>
    <description>Recent content in optimization on Maxgio&#39;s blog</description>
    <image>
      <url>https://blog.maxgio.me/papermod-cover.png</url>
      <link>https://blog.maxgio.me/papermod-cover.png</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Sun, 18 Aug 2024 21:00:00 +0200</lastBuildDate><atom:link href="https://blog.maxgio.me/tags/optimization/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Unleashing the power of frame pointers for profiling pt.2 - Writing a basic profiler</title>
      <link>https://blog.maxgio.me/posts/unleashing-power-frame-pointers-writing-simple-continuous-profiler/</link>
      <pubDate>Sun, 18 Aug 2024 21:00:00 +0200</pubDate>
      
      <guid>https://blog.maxgio.me/posts/unleashing-power-frame-pointers-writing-simple-continuous-profiler/</guid>
      <description>In the previous blog about the program execution environment, we introduced the concept of stack unwinding with frame pointers as one of the techniques leveraged for profiling a program.
In this blog, we&amp;rsquo;ll see practically how we can build a basic sampling-based continuous profiler.
Since we don’t want the application to necessarily be instrumented, we can use the Linux kernel instrumentation. Thanks to eBPF we’re able to dynamically load and attach the profiler program to specific kernel entry points, limiting the introduced overhead by exchanging data with userspace through eBPF maps.</description>
    </item>
    
    <item>
      <title>Unleashing the power of frame pointers pt.1 - The execution environment</title>
      <link>https://blog.maxgio.me/posts/unleashing-power-frame-pointers-execution-environment/</link>
      <pubDate>Sun, 23 Jun 2024 21:00:00 +0200</pubDate>
      
      <guid>https://blog.maxgio.me/posts/unleashing-power-frame-pointers-execution-environment/</guid>
      <description>Profiling the CPU allows us to analyze the program&amp;rsquo;s performance, identify bottlenecks, and optimize its efficiency.
Have you ever wondered what happens behind the scenes when you run a program and how to account for CPU time for the actual program functions? And even more, how to write such a tool to profile the program?
Even though great open-source projects provide continuous profiling with vast support for compiled, JITed, and interpreted, languages, with or without debug info, with or without frame pointers, etc.</description>
    </item>
    
    <item>
      <title>How I improved consistency and performance in a Go crawler with retry logics and network tuning</title>
      <link>https://blog.maxgio.me/posts/improving-consistency-performance-go-crawler-retry-logics-http-client-tuning/</link>
      <pubDate>Mon, 04 Sep 2023 10:20:00 +0200</pubDate>
      
      <guid>https://blog.maxgio.me/posts/improving-consistency-performance-go-crawler-retry-logics-http-client-tuning/</guid>
      <description>Introduction wfind is a simple web crawler for files and folders in web pages hyerarchies. The goal is basically the same of GNU find for file systems. At the same time it&amp;rsquo;s inspired by GNU wget, and it merges the find features applied to files and directories exposed as HTML web resources.
In this blog we&amp;rsquo;ll go through the way I improved consistency in this crawler, by implementing retry logics and tuning network and transport in the HTTP client.</description>
    </item>
    
  </channel>
</rss>
