Der effizienteste Weg, einer Variablen einen optionalen Wert zuzuweisen

Lesezeit: 2 Minuten

Ich habe ein WordPress-Projekt geerbt und schreibe gerade ein Skript zum Exportieren von Datenbanktabellen im .csv-Format. Der ursprüngliche Designer speicherte viele benutzerdefinierte Informationen über jeden Benutzer in der wp_usermeta Tisch. Leider waren viele dieser Informationen optional, und im Fall von optionalen NULL-Daten existiert die Zeile in der Datenbank einfach nicht. Ein Beispiel für Benutzer mit einem optionalen „Geschlecht“-Feld:

umeta_id user_id meta_key meta_value
1        1       gender   1
2        1       phone    5555555555
3        1       address  "123 alphabet lane"

4        2       phone    5555551234
5        2       address  "123 alphabet way"

6        3       gender   2
...

Ich kann keine fehlenden Felder mit einer CSV-Datei haben, oder die Formatierung würde seltsam aussehen, also muss ich die Informationen jedes Benutzers auf diese fehlenden Felder überprüfen und eine leere Zeichenfolge einfügen. Da ich über Zehntausende von Datenbankzeilen iterieren werde, war ich neugierig, welche Methode der Variablenzuweisung in Bezug auf Speicherverbrauch und Ausführungszeit dafür am effizientesten ist.

Methode 1

if (empty($fetched[$field]))
{
    $data[$field] = '';
}
else
{
    $data[$field] = $fetched[$field];
}

Methode 2

$data[$field] = '';
if (! empty($fetched[$field])
{
    $data[$field] = $fetched[$field];
}

Methode 3

$data[$field] = empty($fetched[$field]) ? '' : $fetched[$field];

Oder sind sie alle nah genug dran, dass es wirklich keinen Unterschied macht? Vielen Dank im Voraus für jeden Einblick, den Sie anbieten können!

  • Sie sind alle konditionsbasiert, also denke ich, dass es keinen großen Unterschied in der Effizienz dieser Methoden gibt, daher würde ich die dritte Methode empfehlen – kurz, auf den Punkt und ohne Klammern.

    – Ofir Baruch

    30. August 2013 um 13:44 Uhr

  • Ich würde normalerweise den Bedingungsoperator verwenden, einfach für die Lesbarkeit. Ich kann mir vorstellen, dass es in Bezug auf die Leistung kaum Unterschiede gibt. Siehe Vergleichsoperatoren

    – billyonecan

    30. August 2013 um 13:45 Uhr


  • Fangen Sie nicht einmal an, über den “effizientesten Weg” nachzudenken, um etwas so Niedriges wie dieses zu tun. Das ist Mikrooptimierung und die Wurzel allen Übels. Wählen Sie die Methode aus, die Sie und andere Entwickler, die sich Ihren Code ansehen müssen, finden lesbar. Nur weil du sparen könntest 0.00000001 Sekunden verbringen Sie doppelt so viel Zeit damit, herauszufinden, was der Code tut, wenn alles mikrooptimiert ist.

    – h2oooooo

    30. August 2013 um 13:49 Uhr

Benutzer-Avatar
Ihr gesunder Menschenverstand

Sie alle nah genug, dass es wirklich keinen Unterschied macht. Bot auch nur am geringsten.

Kein Syntaxproblem beeinträchtigt jemals die Leistung

es ist

  • Algorithmen (eine Schleife von 100500 Iterationen)
  • Datenmanipulationen (Durchsuchen einer Datei von 500 MB)
  • Netzwerksuche (Überprüfung von RSS-Feeds für jede Seitenanforderung)
  • schwere Berechnungen (Bildgrößenänderung)

Leistung beeinflussen.

Aber nie ein Syntaxproblem. Nicht irgendein Syntaxproblem. Niemals. Weder messbarer noch theoretischer Unterschied.

1252700cookie-checkDer effizienteste Weg, einer Variablen einen optionalen Wert zuzuweisen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy