{"id":1413,"date":"2019-08-23T17:11:40","date_gmt":"2019-08-23T14:11:40","guid":{"rendered":"https:\/\/djangostars.com\/blog\/?p=1413"},"modified":"2025-10-21T08:35:47","modified_gmt":"2025-10-21T08:35:47","slug":"my-story-with-golang","status":"publish","type":"post","link":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/","title":{"rendered":"Golang vs. Python: Comparing Performance and Benchmarks"},"content":{"rendered":"<p>Hello, my name is Vadym, and this is my story about how I started learning Go, what it felt like compared to Python (the language I currently use at work), and benchmarking.<\/p>\n<p>I believe that every developer should learn constantly to be good at what they do. And it&#8217;s not only about knowing new <a href=\"https:\/\/djangostars.com\/blog\/python-frameworks-for-web-development\/\">frameworks<\/a>, databases, or platforms like AWS Lambda. It\u2019s about knowing how the services you use from day to day interact with each other, differentiate when your favorite language uses a link to an object or a copy of the object, and many other things.<\/p>\n<p>I&#8217;ve been using Python as my main language for writing production code for 10 years. But even as a devoted <a href=\"https:\/\/djangostars.com\/services\/python-django-development\/\">Python developer<\/a>, I\u2019ve tried different languages over time. I like to learn new languages, because I might pick up something for my daily work \u2013 even from ones I won\u2019t use or from languages I don\u2019t really like, such as Ruby or Java. Also, it\u2019s not very important for me to learn new languages only. I like to spend time on old and rarely used languages as well. For example, I\u2019ve tried Lisp for more than writing a config for Emacs. I also like Erlang a lot, but it\u2019s not very popular nowadays.<\/p>\n<p>As I mentioned above, the Django Stars development team has extensive experience with Python in various <a href=\"https:\/\/djangostars.com\/case-studies\/\">projects<\/a>. In this little guide, I would like to compare the performance of Golang vs Python and push head-on other benchmarks of these programming languages.<br \/>\n<div class=\"info_box_shortcode_holder\" style=\"background-image: url(https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2023\/08\/Technology-Consulting.png)\">\n    <div class=\"info_box_label\">\n    Services\n    <\/div>\n    <div class=\"info_box_logo\">\n    \n    <\/div>\n    \n    <div class=\"info_box_title font_size_\">\n   <span class=\"info_box_title_inner\">Tech consultancy: Get advantage.&lt;br \/&gt;\n<\/span>\n    <\/div>\n    <div class=\"info_box_link\">\n        <a href=\"https:\/\/djangostars.com\/services\/software-consultancy\/\" target=\"_blank\" >\n            <span>Learn More<\/span>\n            <div class=\"button_animated\">\n                <svg width=\"24\" height=\"12\" viewBox=\"0 0 24 12\" fill=\"none\"\n                     xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M23.725 5.33638C23.7248 5.3361 23.7245 5.33577 23.7242 5.33549L18.8256 0.460497C18.4586 0.0952939 17.865 0.096653 17.4997 0.463684C17.1345 0.830668 17.1359 1.42425 17.5028 1.7895L20.7918 5.06249H0.9375C0.419719 5.06249 0 5.48221 0 5.99999C0 6.51777 0.419719 6.93749 0.9375 6.93749H20.7917L17.5029 10.2105C17.1359 10.5757 17.1345 11.1693 17.4998 11.5363C17.865 11.9034 18.4587 11.9046 18.8256 11.5395L23.7242 6.66449C23.7245 6.66421 23.7248 6.66388 23.7251 6.6636C24.0923 6.29713 24.0911 5.70163 23.725 5.33638Z\"\n                          fill=\"#282828\"><\/path>\n                <\/svg>\n                <div class=\"shape\"><\/div>\n            <\/div>\n        <\/a>\n    <\/div>\n<\/div><\/p>\n<h2 id=\"header0\">Getting to Know Go<\/h2>\n<p>Before comparing Go vs Python performance, it is worth telling a little more about Golang, or rather about my acquaintance with it. A few weeks ago, I started searching for a new language to learn. First of all, I started investigating Elixir, as I like Erlang, but I don&#8217;t really like it after reading the tutorial. After a few days, I settled on Go, as I\u2019ve heard a lot about this language from different sources. At first sight, the language didn\u2019t seem complicated, but it required a different approach to the application architecture than Python, for example. So I decided to delve deeper into Go.<\/p>\n<h3>Step One<\/h3>\n<p>What I did first was to have a look at the Go community. The Go community has an amazing tutorial that teaches you a lot about the language right away. I believe it&#8217;s a great starting point:<a href=\"https:\/\/go.dev\/tour\/\"> www.tour.golang.org<\/a>. The tutorial is split into three sections, plus a welcome section:<\/p>\n<ul>\n<li><strong>Basic<\/strong> shows you the basics of Go syntax, how to work with variables and functions, flow control statements and more complex types.<\/li>\n<li><strong>Method and interfaces<\/strong> explains how to create and implement interfaces.<\/li>\n<li><strong>Concurrency in Go<\/strong> explains all the basics on the subject.<\/li>\n<\/ul>\n<p>All of these sections have simple practical tasks that cover what you have learned.<\/p>\n<h3>Step Two<\/h3>\n<p>The next step to learning Go was watching presentations. The best one (in my opinion) is <a href=\"https:\/\/www.youtube.com\/watch?v=f6kdp27TYZs\">Go Concurrency Patterns<\/a> by Rob Pike. This presentation is easy to watch and very motivating. I also recommend watching YouTube suggestions based on this video.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1411\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/08\/go-concurrency-patterns.png\" alt=\"go-concurrency-patterns-performance\" width=\"1049\" height=\"507\" \/><\/p>\n<h3>Step Three<\/h3>\n<p>Before I tried creating my own simple application (and started a Go vs. <a href=\"https:\/\/djangostars.com\/blog\/top-seven-apps-built-python\/\">Python apps<\/a> battle), I had studied another great tutorial \u2013<a href=\"https:\/\/github.com\/pityonline\/learn-go-with-tests\"> Learn Go with tests<\/a>. This tutorial explains Go and how to write code using the methodology of test-driven development.<br \/>\nAfter going through all these tutorials and videos, I decided to finally try to write a simple application with Go myself. I chose to write a URL-shortener service, similar to bit.ly or goo.gl, but simpler, without statistics and UI. (I may add them in the future.)<br \/>\nFirst, I attempted to create a channel with a set of prepared short strings to identify long URLs. It was an excellent exercise for working with channels and goroutines. But for now, I don&#8217;t use this code in service and generate short strings each time I need to store a long URL. Next, I started writing code for the application \u2013 short string generation code with tests at first. When I started thinking about storage, I got stuck. This happened because I didn&#8217;t understand how to split my code correctly. For me, the answer was in the <a href=\"https:\/\/github.com\/golang-standards\/project-layout\">project layout<\/a> of the Go standard library and in checking out some popular Go libraries and applications. Also, I found <a href=\"https:\/\/github.com\/golang\/go\/wiki\/Modules\">Go modules<\/a> that weren\u2019t highlighted in any of the tutorials.<\/p>\n<pre><code>\r\n.\r\n\u251c\u2500\u2500 api\r\n\u2502 \u00a0 \u2514\u2500\u2500 openapi.yaml\r\n\u251c\u2500\u2500 build\r\n\u2502 \u00a0 \u251c\u2500\u2500 ci\r\n\u2502 \u00a0 \u2502 \u2514\u2500\u2500 .travis.yml\r\n\u2502 \u00a0 \u251c\u2500\u2500 Dockerfile\r\n\u2502 \u00a0 \u2514\u2500\u2500 docker-compose.yml\r\n\u251c\u2500\u2500 internal\r\n\u2502 \u00a0 \u251c\u2500\u2500 generator\r\n\u2502 \u00a0 \u2502 \u251c\u2500\u2500 generator.go\r\n\u2502 \u00a0 \u2502 \u2514\u2500\u2500 generator_test.go\r\n\u2502 \u00a0 \u2514\u2500\u2500 storage\r\n\u2502 \u00a0 \u00a0 \u00a0 \u251c\u2500\u2500 redis_storage.go\r\n\u2502 \u00a0 \u00a0 \u00a0 \u251c\u2500\u2500 redis_storage_test.go\r\n\u2502 \u00a0 \u00a0 \u00a0 \u251c\u2500\u2500 simple_storage.go\r\n\u2502 \u00a0 \u00a0 \u00a0 \u251c\u2500\u2500 simple_storage_test.go\r\n\u2502 \u00a0 \u00a0 \u00a0 \u2514\u2500\u2500 storage.go\r\n\u251c\u2500\u2500 third_party\r\n\u2502 \u00a0 \u251c\u2500\u2500 locustfile.py\r\n\u2502 \u00a0 \u251c\u2500\u2500 redoc-static.html\r\n\u2502 \u00a0 \u2514\u2500\u2500 wrk_post.lua\r\n\u251c\u2500\u2500 .gitignore\r\n\u251c\u2500\u2500 .travis.yml -&gt; build\/ci\/.travis.yml\r\n\u251c\u2500\u2500 LICENSE\r\n\u251c\u2500\u2500 README.md\r\n\u251c\u2500\u2500 go.mod\r\n\u251c\u2500\u2500 go.sum\r\n\u2514\u2500\u2500 main.go\r\n<\/code><\/pre>\n<p>I started my second attempt by describing OpenAPI schema for my API. Then I copied the generating function from the previous code and started working on URL storage. As I was researching project layouts for Go applications, I found Bolt \u2013 a simple key-value storage library written in Go. The description of this library says that the storage can be used to store a large amount of data. I decided to try it, as the approach I used allowed me to easily replace this library with different data storage without changing a lot of code.<\/p>\n<h2 id=\"header1\">Benchmarking and Go vs. Python Performance<\/h2>\n<p>My first application in Go is ready, and to compare Golang vs. Python, I want to do a benchmark test. Usually, I use wrk to do so,\u00a0 but this time I decided to use Locust. With Locust, it&#8217;s easier to create a test that will use all the endpoints I have at the same time. I was surprised when the result was about 43 requests per second, which is a quite small number. My first assumption was that the number was so small because the storage uses only files on my disk. I decided to write the same application in <a href=\"https:\/\/djangostars.com\/blog\/asynchronous-programming-in-python-asyncio\/\">Python using asyncio<\/a>, aiohttp and aioredis as storage, check the results, and then implement storage that uses Redis in a Go application.<\/p>\n<aside style=\"margin-bottom: 20px; font-style: italic; background-color: #f3f2f0;\">Read Also: <a href=\"https:\/\/djangostars.com\/blog\/python-performance-improvement\/\">How to Optimize Python Code Performance<\/a><\/aside>\n<p>And it worked! I got the same result as the <a href=\"https:\/\/djangostars.com\/blog\/django-performance-optimization-tips\/\">performance<\/a> benchmark test for both applications in Python and Go. First of all, I ran wrk to test the API endpoint to retrieve the long URL by short string. It was the right decision, because I received different results. The Go application was 9 times faster than Python, and Python did more than 43 requests in a second. The numbers were now about 280 requests per second for Python, and 2500 for Go. Which, from my point of view, is closer to the truth. Locust probably suggests having slaves to do proper <a href=\"https:\/\/djangostars.com\/blog\/django-pytest-testing\/\">testing<\/a> instead of using fork\/threads, and that&#8217;s why 43 requests per second is the limit for Locust in the current setup.<br \/>\n<div class=\"supsystic-table-loader spinner\"style=\"background-color:#000000\"><\/div><div id=\"supsystic-table-16_48018\" class=\"supsystic-tables-wrap\" style=\" background: url(); visibility: hidden; \" data-table-width-fixed=\"100%\" data-table-width-mobile=\"100%\" ><table id=\"supsystic-table-16\" data-border-spacing=\"\" class=\"supsystic-tableborder lightboxImgcell-border\" data-id=\"16\" data-view-id=\"16_48018\" data-title=\"Go + Bolt (GET) and Python + Redis (GET) - test\" data-currency-format=\"$1,000.00\" data-percent-format=\"10.00%\" data-date-format=\"DD.MM.YYYY\" data-time-format=\"HH:mm\" data-features=\"[&quot;after_table_loaded_script&quot;]\" data-search-value=\"\" data-lightbox-img=\"\" data-head-rows-count=\"1\" data-pagination-length=\"50,100,All\" data-auto-index=\"off\" data-searching-settings=\"{&quot;columnSearchPosition&quot;:&quot;bottom&quot;,&quot;minChars&quot;:&quot;0&quot;}\" data-lang=\"default\" data-override=\"{&quot;emptyTable&quot;:&quot;&quot;,&quot;info&quot;:&quot;&quot;,&quot;infoEmpty&quot;:&quot;&quot;,&quot;infoFiltered&quot;:&quot;&quot;,&quot;lengthMenu&quot;:&quot;&quot;,&quot;search&quot;:&quot;&quot;,&quot;zeroRecords&quot;:&quot;&quot;,&quot;exportLabel&quot;:&quot;&quot;,&quot;file&quot;:&quot;default&quot;}\" data-merged=\"[]\" data-responsive-mode=\"0\" data-from-history=\"0\" style=\"width:100%;\" ><thead><tr><th class=\"\" style=\"width:47.4729%; padding: 0 !important;\"><\/th><th class=\"\" style=\"width:52.5271%; padding: 0 !important;\"><\/th><\/tr><\/thead><tbody><tr ><td data-cell-id=\"A1\" data-x=\"0\" data-y=\"1\" class=\"bold htCenter\" data-cell-type=\"text\" data-original-value=\"Go + Bolt (GET)\" data-order=\"Go + Bolt (GET)\" style=\"min-width:47.4729%; \" >Go + Bolt (GET) <\/td><td data-cell-id=\"B1\" data-x=\"1\" data-y=\"1\" class=\"bold htCenter\" data-cell-type=\"text\" data-original-value=\"Python + Redis (GET)\" data-order=\"Python + Redis (GET)\" style=\"min-width:52.5271%; \" >Python + Redis (GET) <\/td><\/tr><tr ><td data-cell-id=\"A2\" data-x=\"0\" data-y=\"2\" class=\"fsize-10\" data-cell-type=\"text\" data-original-value=\"&lt;code&gt;Running 30s test @ http:\/\/rpi:5000\/api\/v1\/url\/aaaa&lt;br&gt; 12 threads and 400 connections&lt;br&gt; Thread Stats \u00a0 Avg Stdev \u00a0 \u00a0 Max +\/- Stdev&lt;br&gt; Latency \u00a0 164.54ms 23.21ms 581.73ms \u00a0 78.59%&lt;br&gt; Req\/Sec \u00a0 201.33 56.80 \u00a0 450.00 70.14%&lt;br&gt; 71773 requests in 30.10s, 11.50MB read&lt;br&gt; Requests\/sec: \u00a0 2384.19&lt;br&gt; Transfer\/sec:\u00a0 \u00a0 391.16KB&lt;\/code&gt;\" data-order=\"&lt;code&gt;Running 30s test @ http:\/\/rpi:5000\/api\/v1\/url\/aaaa&lt;br&gt; 12 threads and 400 connections&lt;br&gt; Thread Stats \u00a0 Avg Stdev \u00a0 \u00a0 Max +\/- Stdev&lt;br&gt; Latency \u00a0 164.54ms 23.21ms 581.73ms \u00a0 78.59%&lt;br&gt; Req\/Sec \u00a0 201.33 56.80 \u00a0 450.00 70.14%&lt;br&gt; 71773 requests in 30.10s, 11.50MB read&lt;br&gt; Requests\/sec: \u00a0 2384.19&lt;br&gt; Transfer\/sec:\u00a0 \u00a0 391.16KB&lt;\/code&gt;\" ><code>Running 30s test @ http:\/\/rpi:5000\/api\/v1\/url\/aaaa<br> 12 threads and 400 connections<br> Thread Stats \u00a0 Avg Stdev \u00a0 \u00a0 Max +\/- Stdev<br> Latency \u00a0 164.54ms 23.21ms 581.73ms \u00a0 78.59%<br> Req\/Sec \u00a0 201.33 56.80 \u00a0 450.00 70.14%<br> 71773 requests in 30.10s, 11.50MB read<br> Requests\/sec: \u00a0 2384.19<br> Transfer\/sec:\u00a0 \u00a0 391.16KB<\/code><\/td><td data-cell-id=\"B2\" data-x=\"1\" data-y=\"2\" class=\"fsize-10\" data-cell-type=\"text\" data-original-value=\"&lt;code&gt;Running 30s test @ http:\/\/rpi:5000\/api\/v1\/url\/aaaa&lt;br&gt; 12 threads and 400 connections&lt;br&gt; Thread Stats \u00a0 Avg Stdev \u00a0 \u00a0 Max +\/- Stdev&lt;br&gt; Latency \u00a0 489.29ms 196.29ms \u00a0 1.38s 82.02%&lt;br&gt; Req\/Sec\u00a0 \u00a0 68.43 31.64 \u00a0 192.00 72.98%\/code&amp;gt;&lt;br&gt; 24253 requests in 30.10s, 4.88MB read&lt;br&gt; Requests\/sec:\u00a0 \u00a0 805.80&lt;br&gt; Transfer\/sec:\u00a0 \u00a0 166.07KB\" data-order=\"&lt;code&gt;Running 30s test @ http:\/\/rpi:5000\/api\/v1\/url\/aaaa&lt;br&gt; 12 threads and 400 connections&lt;br&gt; Thread Stats \u00a0 Avg Stdev \u00a0 \u00a0 Max +\/- Stdev&lt;br&gt; Latency \u00a0 489.29ms 196.29ms \u00a0 1.38s 82.02%&lt;br&gt; Req\/Sec\u00a0 \u00a0 68.43 31.64 \u00a0 192.00 72.98%\/code&amp;gt;&lt;br&gt; 24253 requests in 30.10s, 4.88MB read&lt;br&gt; Requests\/sec:\u00a0 \u00a0 805.80&lt;br&gt; Transfer\/sec:\u00a0 \u00a0 166.07KB\" ><code>Running 30s test @ http:\/\/rpi:5000\/api\/v1\/url\/aaaa<br> 12 threads and 400 connections<br> Thread Stats \u00a0 Avg Stdev \u00a0 \u00a0 Max +\/- Stdev<br> Latency \u00a0 489.29ms 196.29ms \u00a0 1.38s 82.02%<br> Req\/Sec\u00a0 \u00a0 68.43 31.64 \u00a0 192.00 72.98%\/code&gt;<br> 24253 requests in 30.10s, 4.88MB read<br> Requests\/sec:\u00a0 \u00a0 805.80<br> Transfer\/sec:\u00a0 \u00a0 166.07KB <\/td><\/tr><\/tbody><\/table><!-- \/#supsystic-table-16.supsystic-table --><\/div><!-- \/.supsystic-tables-wrap --><!-- Tables Generator by Supsystic --><!-- Version:1.9.77 --><!-- http:\/\/supsystic.com\/ --><br \/>\n* printout from final tests<br \/>\nThe next test was for an API for storing long URLs. It showed that my Go application can handle about 20 requests per second. This confirmed my expectations. After this test, I did the storage implementation that uses Redis and ran all the tests again using wrk.<br \/>\nBelow, you can see the chart with the test results and compare Go vs. Python speed. I used Raspberry Pi 3 B+ as a platform for the application and a laptop with i7 and 16 Gb of RAM to run wrk (Locust had the same configuration). It was an intentional decision to use Raspberry Pi, to give the laptop on which I ran the test more power.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-1412\" src=\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2019\/08\/test-results.png\" alt=\"golang-performance-test-results\" width=\"1600\" height=\"1080\" \/><br \/>\nAll these results are from wrk that has been working with 12 threads and 400 connections for 30 seconds. The numbers are the total amount for all the threads, not for just one. If you\u2019re interested in the raw wrk results, please follow <a href=\"https:\/\/gist.github.com\/Quard\/74861f27fb956bbe088c002a8574ffbe\">this link<\/a>.<\/p>\n<h2 id=\"header2\">My Personal Results<\/h2>\n<p>To be honest, the application I wrote in Python and ran with the help of Gunicorn from the beginning had worse results than I showed you. It gave approx. 360 requests per second. But as soon as I had an increased number of Gunicorn workers from 2 (default) to 4, the results doubled.\u00a0 There are 4 CPUs on Raspberry Pi, and to have more workers than CPUs could cause worse results.<br \/>\nWhen comparing Golang vs. Python performance, I may have gotten better results for the Go application, but I don&#8217;t know enough about how to run a Go application in production.<br \/>\nIn conclusion, I want to say that I&#8217;m very excited about Go. The last time I was so excited about a programming language was when I started learning Python. For an agile company that makes web applications, Python is probably a better choice right now, as more developers know Python. The most impressive thing about Python is its huge community.<\/p>\n<p>In addition, I believe that to write applications in Go, developers should think more about application design than they do when they use other languages like Python. This can be a decisive factor when comparing Go and Python. Otherwise, they won\u2019t be able to make changes and extend the application functionality in the future. Or it might be extremely difficult. By the way, here\u2019s the repository with my Go application that I hope to work on and extend in the future: <a href=\"https:\/\/github.com\/Quard\/gosh\">https:\/\/github.com\/Quard\/gosh<\/a>.<\/p>\n<p>And one last thing. Did any of you have similar experiences with learning either of these languages? What were your insights?<\/p>\n<p><b>If you are looking for a dedicated team for your <a href=\"https:\/\/djangostars.com\/case-studies\/\">project<\/a> or want to consult on software development, <a href=\"https:\/\/djangostars.com\/get-in-touch\/\">contact<\/a> Django Stars.<\/b><div class=\"lead-form-wrapper lets_disqus\">\n    <div class=\"lead-form transparent-footer\">\n        <p class=\"discuss-title paragraph-discuss col-md-12\">Have an idea? Let&#039;s discuss!<\/p>\n\n        \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f2589-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"2589\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/blog\/wp-json\/wp\/v2\/posts\/1413#wpcf7-f2589-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" enctype=\"multipart\/form-data\" novalidate=\"novalidate\" data-status=\"init\">\n<div style=\"display: none;\">\n<input type=\"hidden\" name=\"_wpcf7\" value=\"2589\" \/>\n<input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.0.6\" \/>\n<input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/>\n<input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f2589-o1\" \/>\n<input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/>\n<input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<input type=\"hidden\" name=\"form_start_time\" value=\"1775553505\" \/>\n<input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/div>\n<div class=\"form_holder\">\n    <div class=\"input_section input_row\">\n        <div class=\"input_holder\">\n                            <span class=\"input_label\">\n                               Your name *\n                            <\/span>\n            <input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" id=\"your-name\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"text-898\" \/>\n\n            <input class=\"wpcf7-form-control wpcf7-hidden\" id=\"uniq_ga_id\" value=\"\" type=\"hidden\" name=\"uniq_ga_id\" \/>\n        <\/div>\n        <div class=\"input_holder\">\n                            <span class=\"input_label\">\n                                Your email *\n                            <\/span>\n            <input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" id=\"your-email\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"email\" name=\"email-882\" \/>\n        <\/div>\n    <\/div>\n    <div class=\"input_section single_input_row\">\n        <div class=\"input_holder\">\n            <span class=\"input_label\">How can we help you? *<\/span>\n            <input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"message\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"message\" \/>\n        <\/div>\n    <\/div>\n    <div class=\"file_attach\">\n        <input size=\"40\" class=\"wpcf7-form-control wpcf7-file\" accept=\"audio\/*,video\/*,image\/*\" aria-invalid=\"false\" type=\"file\" name=\"file-930\" \/>\n        <div class=\"file_placeholder\">\ud83d\udcce <span>Attach File<\/span>\n            <span class=\"file_formats\">Formats: pdf, doc, docx, rtf, ppt, pptx.<\/span><\/div>\n    <\/div>\n    <div class=\"checkbox_row\">\n        <div class=\"single_checkbox\"><div class=\"checkbox_indicator\"><div class=\"checked_indicator\"><svg width=\"14\" height=\"12\" viewBox=\"0 0 14 12\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.66804 12L0 7.26951L1.22426 6.05269L4.54927 9.40456L12.6737 0L14 1.10613L4.66804 12Z\" fill=\"#1E232C\"\/><\/svg><\/div><\/div><input type=\"checkbox\" name=\"agree\" id=\"privacy\" value=\"agree privacy\"><label for=\"privacy\" class=\"\">I have read and accepted <a href=\"https:\/\/djangostars.com\/privacy-policy\/\" style=\"margin-left: 6px;\"> Privacy Policy*<\/a><\/label><\/div>\n        <div class=\"single_checkbox\"><div class=\"checkbox_indicator\"><div class=\"checked_indicator\"><svg width=\"14\" height=\"12\" viewBox=\"0 0 14 12\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.66804 12L0 7.26951L1.22426 6.05269L4.54927 9.40456L12.6737 0L14 1.10613L4.66804 12Z\" fill=\"#1E232C\"\/><\/svg><\/div><\/div><input type=\"checkbox\" name=\"agree\" id=\"marketing\" value=\"agree for marketing\"><label for=\"marketing\" class=\"\">I agree to receive marketing content from Django Stars<\/label><\/div>\n    <\/div>\n    <div class=\"submit\"><button type=\"submit\"><span>send message<\/span><\/button><div class=\"safeguard\">We safeguard your privacy<\/div><\/div>\n<\/div>\n<div style=\"position: absolute; left: -5000px;\" aria-hidden=\"true\">\n    <input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"website_url\" \/>\n<\/div><script type='text\/javascript'>\n\n\t\t\t\t\t\tif(contactform === undefined){\n\t\t\t\t\t\t\tvar contactform = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar innerVal = [2589,'mail_sent_ok','Thank you for your message. It has been sent.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'mail_sent_ng','There was an error trying to send your message. Please try again later.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'validation_error','One or more fields have an error. Please check and try again.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'spam','There was an error trying to send your message. Please try again later.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'accept_terms','You must accept the terms and conditions before sending your message.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_required','The field is required.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_too_long','The field is too long.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_too_short','The field is too short.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'upload_failed','There was an unknown error uploading the file.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'upload_file_type_invalid','You are not allowed to upload files of this type.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'upload_file_too_large','The file is too big.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'upload_failed_php_error','There was an error uploading the file.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_date','The date format is incorrect.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'date_too_early','The date is before the earliest one allowed.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'date_too_late','The date is after the latest one allowed.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_number','The number format is invalid.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'number_too_small','The number is smaller than the minimum allowed.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'number_too_large','The number is larger than the maximum allowed.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'quiz_answer_not_correct','The answer to the quiz is incorrect.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_email','The e-mail address entered is invalid.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_url','The URL is invalid.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'invalid_tel','The telephone number is invalid.'];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\tvar innerVal = [2589,'gdpr',''];\n\t\t\t\t\t\tcontactform.push(innerVal);\n\t\t\t\t\t\t<\/script><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n    <\/div>\n\n    <div class=\"success_disqus\">\n        Thank you for your message.\n        <span>We\u2019ll contact you shortly<\/span>.\n    <\/div>\n<\/div>\n\n<script>\n    \/\/ (function ($) {\n    function click_input() {\n        jQuery('.file_placeholder').on('click', function () {\n            jQuery(this).parent().find('input').click();\n        })\n    }\n\n    document.addEventListener(\"DOMContentLoaded\", click_input);\n\n    \/\/ })(jQuery)\n<\/script>\n\n\n<div class=\"dj-main-article-faq\" style=\"padding-top: 0px;\">\n\t\t<div class=\"dj-main-article-faq-title\">\n\t\tFrequently Asked Questions\n\t\t<\/div>\n\t\t<div class=\"dj-main-article-faq-items\">\n\t\t\t<div class=\"dj-main-article-faq-accordeon accordeon\"><dl>\n\t\t\t\t<dt>Which is fast in web development Go or Python? \n\t\t\t\t<div class=\"cross\">\n\t\t\t\t<span><\/span>\n\t\t\t\t<span><\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<\/dt>\n\t\t\t\t<dd><p>Golang is known for its fast performance and efficient use of resources. It is a compiled language, which means that the code is translated into machine-readable code before it is executed, resulting in faster execution compared to interpreted languages such as Python. On the other hand, Python has a lot of libraries, frameworks, and modules that you can use to optimize performance and speed up the development process.<\/p><p>When comparing Golang vs. Python performance, I may have gotten better results for the Go application, but I don\u2019t know enough about how to run a Go application in production.<\/p><\/dd>\n\t\t\t<\/dl><dl>\n\t\t\t\t<dt>How to get started learning the Go programming language? \n\t\t\t\t<div class=\"cross\">\n\t\t\t\t<span><\/span>\n\t\t\t\t<span><\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<\/dt>\n\t\t\t\t<dd>To start learning the programming language Go, the first step might be to look at the Go community. The Go community has an amazing tutorial that helps you learn a lot about the language. It includes simple practical tasks that cover what you have learned. After completing the tutorial, you can proceed to view presentations like Go Concurrency Patterns by Rob Pike and Learn Go with tests. Once you have a good understanding of the basics, you can try creating a simple application yourself.<\/dd>\n\t\t\t<\/dl><dl>\n\t\t\t\t<dt>Why is Python better for blockchain than Golang? \n\t\t\t\t<div class=\"cross\">\n\t\t\t\t<span><\/span>\n\t\t\t\t<span><\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<\/dt>\n\t\t\t\t<dd>Python is better for blockchain development than Golang due to its ease of use, readability, and developed community. Python has a rich set of libraries and frameworks that support blockchain development, and its simplicity and flexibility make it a good choice for prototyping and testing ideas. Golang is good for high-performance, high-concurrency web applications, but its ecosystem is not as rich as Python's, and its developer community is not as large.<\/dd>\n\t\t\t<\/dl><dl>\n\t\t\t\t<dt>Comparing Golang vs Python in 2023, which language is preferred for AI apps? \n\t\t\t\t<div class=\"cross\">\n\t\t\t\t<span><\/span>\n\t\t\t\t<span><\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<\/dt>\n\t\t\t\t<dd>It depends on the specific use case and requirements of the AI application. Both Go and Python have their strengths and weaknesses. Go is known for its performance and concurrency capabilities, making it well-suited for high-performance, low-latency systems. Python, on the other hand, has a vast ecosystem of libraries and frameworks for machine learning and data science, making it a popular choice for these types of applications. Ultimately, the choice of language will depend on the specific requirements of the AI application and the development team's expertise.<\/dd>\n\t\t\t<\/dl><\/div>\n\t\t\t<\/div>\n\t\t<\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello, my name is Vadym, and this is my story about how I started learning Go, what it felt like compared to Python (the language I currently use at work), and benchmarking. I believe that every developer should learn constantly to be good at what they do. And it&#8217;s not only about knowing new frameworks, [&hellip;]<\/p>\n","protected":false},"author":35,"featured_media":3542,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[68,44],"tags":[30],"class_list":["post-1413","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python-engineering","category-python-django","tag-backend"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Software Development Blog &amp; IT Tech Insights | Django Stars<\/title>\n<meta name=\"description\" content=\"Curious about learning Go after working with other programming languages? Get valuable insights from a Go enthusiast and see how it compares to Python technology.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/1413\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"My Story with Go, Python, and Benchmarks\" \/>\n<meta property=\"og:description\" content=\"What is it like to start learning Go after having worked with other programming languages? Get some first-hand knowledge from a Go believer, and learn how Go compares to Python.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/\" \/>\n<meta property=\"og:site_name\" content=\"Software Development Blog &amp; IT Tech Insights | Django Stars\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/djangostars\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-23T14:11:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-21T08:35:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/djangostars.com\/blog\/uploads\/2019\/08\/Cover-8.png\" \/>\n<meta name=\"author\" content=\"Vadym Zakovinko\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"My Story with Go, Python, and Benchmarks\" \/>\n<meta name=\"twitter:description\" content=\"What is it like to start learning Go after having worked with other programming languages? Get some first-hand knowledge from a Go believer, and learn how Go compares to Python.\" \/>\n<meta name=\"twitter:creator\" content=\"@djangostars\" \/>\n<meta name=\"twitter:site\" content=\"@djangostars\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vadym Zakovinko\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/\"},\"author\":{\"name\":\"Vadym Zakovinko\",\"@id\":\"https:\/\/djangostars.com\/blog\/#\/schema\/person\/07140b8befb0300bd391ef3756bf4d6c\"},\"headline\":\"Golang vs. Python: Comparing Performance and Benchmarks\",\"datePublished\":\"2019-08-23T14:11:40+00:00\",\"dateModified\":\"2025-10-21T08:35:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/\"},\"wordCount\":1578,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/My-Story-with-Go-Python-and-Benchmarks.jpg\",\"keywords\":[\"Backend\"],\"articleSection\":[\"Expert Python \ud83d\udc0d Engineering &amp; Software Dev &amp; Tech Insights\",\"Python &amp; Django\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/\",\"url\":\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/\",\"name\":\"Golang vs. Python: Performance & Benchmarks Comparison | Django Stars\",\"isPartOf\":{\"@id\":\"https:\/\/djangostars.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/My-Story-with-Go-Python-and-Benchmarks.jpg\",\"datePublished\":\"2019-08-23T14:11:40+00:00\",\"dateModified\":\"2025-10-21T08:35:47+00:00\",\"author\":{\"@id\":\"https:\/\/djangostars.com\/blog\/#\/schema\/person\/07140b8befb0300bd391ef3756bf4d6c\"},\"description\":\"Curious about learning Go after working with other programming languages? Get valuable insights from a Go enthusiast and see how it compares to Python technology.\",\"breadcrumb\":{\"@id\":\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#primaryimage\",\"url\":\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/My-Story-with-Go-Python-and-Benchmarks.jpg\",\"contentUrl\":\"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/My-Story-with-Go-Python-and-Benchmarks.jpg\",\"width\":1440,\"height\":620,\"caption\":\"My-Story-with-Go-Python-and-Benchmarks\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/djangostars.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Golang vs. Python: Comparing Performance and Benchmarks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/djangostars.com\/blog\/#website\",\"url\":\"https:\/\/djangostars.com\/blog\/\",\"name\":\"Software Development Blog &amp; IT Tech Insights | Django Stars\",\"description\":\"Welcome behind the scenes of software product development. We share our best practices, tech solutions, management tips, and every useful insight we\u2018ve got while working on our projects.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/djangostars.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/djangostars.com\/blog\/#\/schema\/person\/07140b8befb0300bd391ef3756bf4d6c\",\"name\":\"Vadym Zakovinko\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/djangostars.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8e92a3220157177135bd6024024dc94fa9509ecc7864ef5b8d2d5f9178527a6a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8e92a3220157177135bd6024024dc94fa9509ecc7864ef5b8d2d5f9178527a6a?s=96&d=mm&r=g\",\"caption\":\"Vadym Zakovinko\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/vadymzakovinko\/\"],\"url\":\"https:\/\/djangostars.com\/blog\/author\/vadym-zakovinko\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Software Development Blog &amp; IT Tech Insights | Django Stars","description":"Curious about learning Go after working with other programming languages? Get valuable insights from a Go enthusiast and see how it compares to Python technology.","canonical":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/1413","og_locale":"en_US","og_type":"article","og_title":"My Story with Go, Python, and Benchmarks","og_description":"What is it like to start learning Go after having worked with other programming languages? Get some first-hand knowledge from a Go believer, and learn how Go compares to Python.","og_url":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/","og_site_name":"Software Development Blog &amp; IT Tech Insights | Django Stars","article_publisher":"https:\/\/www.facebook.com\/djangostars\/","article_published_time":"2019-08-23T14:11:40+00:00","article_modified_time":"2025-10-21T08:35:47+00:00","og_image":[{"url":"https:\/\/djangostars.com\/blog\/uploads\/2019\/08\/Cover-8.png","type":"","width":"","height":""}],"author":"Vadym Zakovinko","twitter_card":"summary_large_image","twitter_title":"My Story with Go, Python, and Benchmarks","twitter_description":"What is it like to start learning Go after having worked with other programming languages? Get some first-hand knowledge from a Go believer, and learn how Go compares to Python.","twitter_creator":"@djangostars","twitter_site":"@djangostars","twitter_misc":{"Written by":"Vadym Zakovinko","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#article","isPartOf":{"@id":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/"},"author":{"name":"Vadym Zakovinko","@id":"https:\/\/djangostars.com\/blog\/#\/schema\/person\/07140b8befb0300bd391ef3756bf4d6c"},"headline":"Golang vs. Python: Comparing Performance and Benchmarks","datePublished":"2019-08-23T14:11:40+00:00","dateModified":"2025-10-21T08:35:47+00:00","mainEntityOfPage":{"@id":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/"},"wordCount":1578,"commentCount":0,"image":{"@id":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#primaryimage"},"thumbnailUrl":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/My-Story-with-Go-Python-and-Benchmarks.jpg","keywords":["Backend"],"articleSection":["Expert Python \ud83d\udc0d Engineering &amp; Software Dev &amp; Tech Insights","Python &amp; Django"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/djangostars.com\/blog\/my-story-with-golang\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/","url":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/","name":"Golang vs. Python: Performance & Benchmarks Comparison | Django Stars","isPartOf":{"@id":"https:\/\/djangostars.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#primaryimage"},"image":{"@id":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#primaryimage"},"thumbnailUrl":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/My-Story-with-Go-Python-and-Benchmarks.jpg","datePublished":"2019-08-23T14:11:40+00:00","dateModified":"2025-10-21T08:35:47+00:00","author":{"@id":"https:\/\/djangostars.com\/blog\/#\/schema\/person\/07140b8befb0300bd391ef3756bf4d6c"},"description":"Curious about learning Go after working with other programming languages? Get valuable insights from a Go enthusiast and see how it compares to Python technology.","breadcrumb":{"@id":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/djangostars.com\/blog\/my-story-with-golang\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#primaryimage","url":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/My-Story-with-Go-Python-and-Benchmarks.jpg","contentUrl":"https:\/\/djangostars.com\/blog\/wp-content\/uploads\/2021\/12\/My-Story-with-Go-Python-and-Benchmarks.jpg","width":1440,"height":620,"caption":"My-Story-with-Go-Python-and-Benchmarks"},{"@type":"BreadcrumbList","@id":"https:\/\/djangostars.com\/blog\/my-story-with-golang\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/djangostars.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Golang vs. Python: Comparing Performance and Benchmarks"}]},{"@type":"WebSite","@id":"https:\/\/djangostars.com\/blog\/#website","url":"https:\/\/djangostars.com\/blog\/","name":"Software Development Blog &amp; IT Tech Insights | Django Stars","description":"Welcome behind the scenes of software product development. We share our best practices, tech solutions, management tips, and every useful insight we\u2018ve got while working on our projects.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/djangostars.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/djangostars.com\/blog\/#\/schema\/person\/07140b8befb0300bd391ef3756bf4d6c","name":"Vadym Zakovinko","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/djangostars.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8e92a3220157177135bd6024024dc94fa9509ecc7864ef5b8d2d5f9178527a6a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8e92a3220157177135bd6024024dc94fa9509ecc7864ef5b8d2d5f9178527a6a?s=96&d=mm&r=g","caption":"Vadym Zakovinko"},"sameAs":["https:\/\/www.linkedin.com\/in\/vadymzakovinko\/"],"url":"https:\/\/djangostars.com\/blog\/author\/vadym-zakovinko\/"}]}},"_links":{"self":[{"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/1413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/comments?post=1413"}],"version-history":[{"count":17,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/1413\/revisions"}],"predecessor-version":[{"id":9856,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/posts\/1413\/revisions\/9856"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/media\/3542"}],"wp:attachment":[{"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/media?parent=1413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/categories?post=1413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/djangostars.com\/blog\/wp-json\/wp\/v2\/tags?post=1413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}