Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 20 Jan 2014, 16:01 
Offline
Schüler

Registriert: 15 Jan 2014, 22:22
Beiträge: 24
Hallo,

haben gelernt, dass in Ruby z.B. ein String mehr Platz verbraucht als ein Symbol oder ein Integer. Also z.B. ein String braucht x Bytes und ein Symbol nur y. Ich weiß aber gar nicht warum und wie ich mir ausrechen kann was wie viel Bites/Bytes braucht.

Kann mir wer helfen :)?


Nach oben
 Profil  
 
BeitragVerfasst: 20 Jan 2014, 17:04 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Strings kennen die Methode #bytesize.

Wieviel Platz allerdings ein Symbol benötigt vermag ich spontan nicht zu sagen.

Viel wichtiger als der Speicherverbrauch ist aber eher der Unterschied in folgendem verhalten:



1
2
3
4
:hello.__id__  #=>   814728
:hello.__id__ #=> 814728
"hello".__id__ #=> 20320100
"hello".__id__ #=> 20600880


PS: Es heißt Bits und Bytes, also Bits ohne „e“ zwischen „t“ und „s“.

_________________
Ubuntu Gnome 14.04 LTS
rvm mit App-spezifischer Ruby-Version (meist 2.2.x) und -Gemset

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
BeitragVerfasst: 20 Jan 2014, 17:05 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
Kurze Antwort: Wenn du Speicheroptimierung machen willst, ist Ruby die falsche Sprache. Nimm C.

Lange Antwort: Ruby allokiert Strings dynamisch. Die Anzahl der Bytes in einem String bekommst du zwar mit




"foo".bytes.count #=> 3


, was aber nicht notwendigerweise identisch ist mit der tatsächlich allokierten Speichermenge, die durchaus (schon mal in Vorbereitung sozusagen) größer sein kann. Wie viele Bytes ein String tatsächlich braucht, wirst du nicht feststellen können.

Wie viel Bytes ein Integer braucht, bekommst du leicht heraus:




1.size #=> 8


Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: