Web Analytics

bwarr

⭐ 116 stars French by dronnix

Qu'est-ce que c'est ?

CI codecov Go Reference Go Report Card

Le Black-White Array (alias BWArr) est une structure de données ordonnée rapide basée sur des tableaux avec $O(\log N)$ allocations mémoire.

Structure de données

L'idée du Black-White Array a été inventée et publiée par le professeur Z. George Mou dans Black-White Array: A New Data Structure for Dynamic Data Sets. Ce dépôt contient la première implémentation publique.

Professeur Z. George Mou

Caractéristiques clés :

Compromis

Benchmarks

Benchmarks en comparaison avec Google BTree.

#### Insertion Mesure du temps, des allocations et des KB alloués pour insérer N valeurs int64 uniques et aléatoires dans une structure de données vide. BWArr et BTree commencent vides et insèrent toutes les valeurs une par une.

Performance d'insertion Allocations d'insertion Octets alloués à l'insertion

Allocations sur de plus petites valeurs :

Insert Allocs small

#### Get Mesure le temps nécessaire pour rechercher N valeurs par leurs clés dans une structure de données pré-remplie. La structure de données est remplie avec toutes les valeurs avant le début du chronométrage, puis chaque valeur est récupérée par clé.

Get performance

#### Itérer Mesure le temps nécessaire pour itérer à travers toutes les N valeurs dans des ordres triés et non triés. Ordered Iterate performance Unordered Iterate performance

#### Plus de benchmarks Des benchmarks supplémentaires et des détails sont disponibles dans le dépôt bwarr-bench. D’autres méthodes seront ajoutées, attendez-vous également à des benchmarks séparés pour les architectures AMD64 et ARM64.

Installation

Nécessite Go 1.22 ou supérieur.

go get github.com/dronnix/bwarr

Puis importez dans votre code :

import "github.com/dronnix/bwarr"

Utilisation

Exemple de base

package main

import ( "fmt"

"github.com/dronnix/bwarr" )

func main() { // Create a BWArr with an integer comparison function // The second parameter (10) is the initial capacity hint bwa := bwarr.New(func(a, b int64) int { return int(a - b) }, 10)

// Insert elements bwa.Insert(42) bwa.Insert(17) bwa.Insert(99) bwa.Insert(23) bwa.Insert(8)

fmt.Printf("Length: %d\n", bwa.Len()) // Output: Length: 5

// Get an element val, found := bwa.Get(42) if found { fmt.Printf("Found: %d\n", val) // Output: Found: 42 }

// Delete an element deleted, found := bwa.Delete(17) if found { fmt.Printf("Deleted: %d\n", deleted) // Output: Deleted: 17 }

// Iterate in ascending order fmt.Println("Elements in sorted order:") bwa.Ascend(func(item int64) bool { fmt.Printf(" %d\n", item) return true // return false to stop iteration early }) // Output: // 8 // 23 // 42 // 99 }

--- Tranlated By Open Ai Tx | Last indexed: 2026-07-08 ---