<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/7-5x-faster-encryption-in-pure-go-with-the-new-simd-and-archsimd-packages-5tyank36j" -->

---
title: 7.5x faster encryption in pure Go with the new simd and...
description: An experience report implementing SIMD-accelerated ChaCha20 encryption in Go using the new experimental simd and simd/archsimd packages (available via...
canonical: https://daily.dev/posts/7-5x-faster-encryption-in-pure-go-with-the-new-simd-and-archsimd-packages-5tyank36j
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: 7.5x faster encryption in pure Go with the new simd and archsimd packages | daily.dev
og:description: An experience report implementing SIMD-accelerated ChaCha20 encryption in Go using the new experimental simd and simd/archsimd packages (available via...
og:url: https://daily.dev/posts/7-5x-faster-encryption-in-pure-go-with-the-new-simd-and-archsimd-packages-5tyank36j
og:image: https://api.daily.dev/og/posts/5tyank36j.png
og:image:alt: 7.5x faster encryption in pure Go with the new simd and archsimd packages
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 7.5x faster encryption in pure Go with the new simd and archsimd packages

**[Sylvain Kerkour](https://daily.dev/sources/kerkour)** · 12 min read · 0 upvotes · 0 comments

## Summary

An experience report implementing SIMD-accelerated ChaCha20 encryption in Go using the new experimental simd and simd/archsimd packages (available via GOEXPERIMENT=simd on go1.27rc3), achieving up to 7.5x speedup over the stdlib implementation on AMD EPYC Zen5 with AVX512 and reaching performance slightly faster than an equivalent Rust implementation. The author details AVX512 quarter-round and transpose implementations, compares the low-level archsimd package (per-instruction control, similar to Rust intrinsics) against the higher-level portable simd package (which the author found insufficient for ChaCha20 due to platform-specific rotation instructions), and closes with feedback for the Go team on missing features like SIMD arrays and additional instructions.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://kerkour.com/golang-chacha20-encryption-simd-archsimd>

## Questions this post answers

### How much faster is ChaCha20 encryption in Go when using the new simd/archsimd packages compared to the standard library on amd64?

Up to 7.5x faster on large buffers using AVX512 on amd64. Benchmarks on an AMD EPYC 9555P show stdlib ChaCha20 topping out around 1005 MB/s for 1MB buffers, while the archsimd-based AVX512 implementation reaches roughly 7517 MB/s, with GOEXPERIMENT=simd and GOAMD64=v4 enabled on Go 1.27rc3.

_Developers evaluating Go's new SIMD support for crypto workloads can track real benchmarks and experience reports on daily.dev._

### What is the difference between Go's simd package and the simd/archsimd package for writing SIMD code?

The simd package is vector-size agnostic and compiles to relevant SIMD instructions or emulates them when unavailable, while archsimd provides fixed-size vectors and methods mapping directly to specific SIMD registers and instructions like AVX512's VPROLVD. archsimd requires platform-specific code but gives more control, whereas simd struggled to express ChaCha20's platform-specific rotate operations portably.

_Anyone choosing between Go's simd and archsimd for cryptographic code can follow ongoing implementation experiences on daily.dev._

### Does Go's stdlib ChaCha20 implementation have SIMD acceleration on amd64?

No, Go's standard library ChaCha20 lacks SIMD acceleration on amd64, likely because ChaCha20-Poly1305 used in TLS already has an assembly implementation. This makes plain ChaCha20 from the stdlib slow even on high-end hardware like an AMD EPYC Zen5 CPU with AVX512, motivating a custom SIMD implementation using the experimental archsimd package.

_Developers building custom crypto on Go can weigh stdlib limitations against new SIMD options via daily.dev._

## Similar posts on daily.dev

- [Arch-specific SIMD in Go](https://daily.dev/posts/arch-specific-simd-in-go-zpizveyj8) · Go · 8 upvotes · 0 comments
- [Issue \#619: Go 1.27's portable SIMD — Go Weekly](https://daily.dev/posts/issue-619-go-1-27-s-portable-simd-go-weekly-ldnl4glb2) · Golang Weekly · 4 upvotes · 0 comments
- [Go's Improving SIMD Support, Platform-Independent SIMD Interface](https://daily.dev/posts/go-s-improving-simd-support-platform-independent-simd-interface-nvfoxnysf) · Phoronix · 6 upvotes · 0 comments

---

Tags: [#performance](https://daily.dev/tags/performance), [#golang](https://daily.dev/tags/golang), [#rust](https://daily.dev/tags/rust), [#cryptography](https://daily.dev/tags/cryptography)

[View this post on daily.dev](https://daily.dev/posts/7-5x-faster-encryption-in-pure-go-with-the-new-simd-and-archsimd-packages-5tyank36j)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"7.5x faster encryption in pure Go with the new simd and archsimd packages","url":"https://daily.dev/posts/7-5x-faster-encryption-in-pure-go-with-the-new-simd-and-archsimd-packages-5tyank36j","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/7-5x-faster-encryption-in-pure-go-with-the-new-simd-and-archsimd-packages-5tyank36j"},"datePublished":"2026-08-19T09:33:42.703Z","dateModified":"2026-09-13T19:45:16.829Z","description":"An experience report implementing SIMD-accelerated ChaCha20 encryption in Go using the new experimental simd and simd/archsimd packages (available via...","image":"https://media.daily.dev/image/upload/s--1KxV4ohY--/f_auto/v1722860400/public/Placeholder%2007","thumbnailUrl":"https://media.daily.dev/image/upload/s--1KxV4ohY--/f_auto/v1722860400/public/Placeholder%2007","isAccessibleForFree":true,"articleSection":"Sylvain Kerkour","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Sylvain Kerkour","logo":"https://media.daily.dev/image/upload/s--3ngWt4Yp--/f_auto,q_auto/v1786438308/logos/kerkour?_a=BAMAMicg0","url":"https://daily.dev/sources/kerkour"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/7-5x-faster-encryption-in-pure-go-with-the-new-simd-and-archsimd-packages-5tyank36j","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"performance,golang,rust,cryptography","timeRequired":"PT12M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Sylvain Kerkour","item":"https://daily.dev/sources/kerkour"},{"@type":"ListItem","position":3,"name":"7.5x faster encryption in pure Go with the new simd and archsimd packages"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/7-5x-faster-encryption-in-pure-go-with-the-new-simd-and-archsimd-packages-5tyank36j#faq","mainEntity":[{"@type":"Question","name":"How much faster is ChaCha20 encryption in Go when using the new simd/archsimd packages compared to the standard library on amd64?","acceptedAnswer":{"@type":"Answer","text":"Up to 7.5x faster on large buffers using AVX512 on amd64. Benchmarks on an AMD EPYC 9555P show stdlib ChaCha20 topping out around 1005 MB/s for 1MB buffers, while the archsimd-based AVX512 implementation reaches roughly 7517 MB/s, with GOEXPERIMENT=simd and GOAMD64=v4 enabled on Go 1.27rc3. Developers evaluating Go's new SIMD support for crypto workloads can track real benchmarks and experience reports on daily.dev."}},{"@type":"Question","name":"What is the difference between Go's simd package and the simd/archsimd package for writing SIMD code?","acceptedAnswer":{"@type":"Answer","text":"The simd package is vector-size agnostic and compiles to relevant SIMD instructions or emulates them when unavailable, while archsimd provides fixed-size vectors and methods mapping directly to specific SIMD registers and instructions like AVX512's VPROLVD. archsimd requires platform-specific code but gives more control, whereas simd struggled to express ChaCha20's platform-specific rotate operations portably. Anyone choosing between Go's simd and archsimd for cryptographic code can follow ongoing implementation experiences on daily.dev."}},{"@type":"Question","name":"Does Go's stdlib ChaCha20 implementation have SIMD acceleration on amd64?","acceptedAnswer":{"@type":"Answer","text":"No, Go's standard library ChaCha20 lacks SIMD acceleration on amd64, likely because ChaCha20-Poly1305 used in TLS already has an assembly implementation. This makes plain ChaCha20 from the stdlib slow even on high-end hardware like an AMD EPYC Zen5 CPU with AVX512, motivating a custom SIMD implementation using the experimental archsimd package. Developers building custom crypto on Go can weigh stdlib limitations against new SIMD options via daily.dev."}}]}
```

