C API to create BigDecimal objects
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 45/100
Rechercherichtung
Beginne mit dem verlinkten Konvertierungscode in Trilogy contrib/ruby/ext/trilogy-ruby/cast.c in den Zeilen 236-241 und verfolge, wie er derzeit BigDecimal-Werte erstellt. Die angeforderte API sollte einen Byte-String und eine Länge akzeptieren; fertig ist die Aufgabe, wenn C-Clients BigDecimal-Objekte erstellen können, ohne einen intermediären Ruby String zu allokieren oder BigDecimal über rb_funcall aufzurufen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
BigDecimal is used by various database clients, as well as various serialization libraries. Many of those are implemented in C, and for them creating BigDecimal objects is an important bottleneck.
For example, here's the relevant code in the Trilogy MySQL client gem: https://github.com/trilogy-libraries/trilogy/blob/7fcfe8c1c79208c6c56439d1d29c7dc591442c53/contrib/ruby/ext/trilogy-ruby/cast.c#L236-L241
It needs to:
- Allocate a Ruby String and cpy the bytes into it.
- Use
rb_funcallto invokeBigDecimal().
The string allocation isn't too bad, but having to use method dispatch is quite costly.
It would be very useful if there was a set of C APIs to efficiently allocate BigDecimal objects:
VALUE BigDecimal_from_str(const char *, size_t len)`
- Vorherrschende Sprache
- C
- Sterne
- 152
- Forks
- 99
- Ø Merge
- 6 Std. 44 Min.
- Gemergte PRs (30 T.)
- 2
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus ruby/bigdecimal
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
ruby/bigdecimal#569 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
ruby/bigdecimal#566 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
ruby/bigdecimal#491 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
ruby/bigdecimal#444 · 1 Kommentar ·
-
BigDecimal#whole?Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
ruby/bigdecimal#291 · 6 Kommentare ·
Alle Issues in ruby/bigdecimal
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
containers/bubblewrap#826 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[compiler-rt] Rtsan-aarch64-NoInstTest: error: no such file or directory: 'NOTFOUND' (libatomic)Offenbuild-problem compiler-rt:rtsan platform:linux
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 63/100
llvm/llvm-project#239039 ·
Maintainer antworten meist innerhalb von 1 Tag
-
component:obi contribfest go test
Schwierigkeit 2/5 Unter einer Stunde Anfängerfreundlichkeit 83/100
open-telemetry/opentelemetry-ebpf-instrumentation#4143 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
checkpoint-restore/criu#3304 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Separate Installation Commands into Individual Code BlocksEvtl. vergeben @andrySD hat das heute übernommen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
colbymchenry/codegraph#3241 ·
Maintainer antworten meist innerhalb von 1 Tag