https://github.com/yigittopm/padding0
Lightweight tool that analyzes memory alignment of structs written in Go and provides optimization.
https://github.com/yigittopm/padding0
analysis go memory-alignment performance
Last synced: 9 months ago
JSON representation
Lightweight tool that analyzes memory alignment of structs written in Go and provides optimization.
- Host: GitHub
- URL: https://github.com/yigittopm/padding0
- Owner: yigittopm
- License: gpl-3.0
- Created: 2024-10-10T19:18:16.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-12-21T11:03:06.000Z (over 1 year ago)
- Last Synced: 2025-04-03T02:46:32.940Z (over 1 year ago)
- Topics: analysis, go, memory-alignment, performance
- Language: Go
- Homepage:
- Size: 5.59 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Go Memory Alignment Analiz Aracı
Bu araç, Go dilinde yazılmış yapıların (struct) bellek hizalamasını analiz etmek ve optimize etmek için geliştirilmiştir.
Dosyalarınızı gezerek **.go** uzantılı dosyaları bulur ve içerisindeki struct yapılarını analiz edip değiştirir.
Go'nun bellekteki verileri hizalama şekli, performans açısından kritik öneme sahiptir. Yanlış hizalanmış yapılar, daha fazla bellek tüketimine ve düşük performansa neden olabilir.

Bu repo, aşağıdaki özellikleri sunar:
- [x] CLI tabanlı kullanım ve kolay entegrasyon
- [x] Basit struct yapılarını analiz etme ve düzenleme
- [ ] Karmaşık struct yapılarını analiz etme ve düzenleme
- [ ] Gereksiz boşlukları (padding) ve bellek israfını tespit etme
- [ ] Performans iyileştirmeleri için önerilerde bulunma
- [ ] Analizleri raporlama
Kendi projelerinizde bellek optimizasyonu yapmanıza yardımcı olmak için geliştirilmiştir. Hem küçük projelerde hem de büyük çaplı sistemlerde faydalı olabilir.
### Kurulum
```bash
go install github.com/yigttopm/padding0@latest
```
Çalıştığınız Go projenizin kök dizinine gidin ve aşağıdaki komutu çalıştırın:
```bash
padding0
```
ya da projenizin yolunu belirterek çalıştırabilirsiniz:
```bash
padding0 -d="path/to/your/project"
```
### Örnek
Projenizde kullandığınız örnek bir struct:
```go
package main
// Total size with padding: 40 bytes
type A struct {
A byte // 1 byte
B int64 // 8 byte
C byte // 1 byte
D int64 // 8 byte
E byte // 1 byte
}
```
ve bu aracı çalıştırdıktan sonra:
```go
package main
// Total size with padding: 24 bytes
type A struct {
B int64 // 8 byte
D int64 // 8 byte
A byte // 1 byte
C byte // 1 byte
E byte // 1 byte
}
```