השמחה של DTrace

[טיוטה] עדכון אחרון על-ידי Joe Schaefer ב-יום ו׳, 26 אפר׳ 2024    מקור
 

למדוד פעמיים, לחתוך פעם אחת, לפני תחילת מאמץ אופטימיזציה קוד

שום דבר לא הופך את מדידת הייצור לקלה יותר מאשר DTrace.

מקורות וידאו.

      ;;
    FreeBSD | Darwin)
      alias ls='ls -G'

אופטימיזציה מכוונת.

כל $dtlv שיעור-שיטת-שיחה למטה נעשה בזמן הידור על-ידי :חתום


use Carp;
sub devar_var :Sealed {
        my Dotiac::DTL::Value $dtlv;
    my $name=shift;
        return $dtlv->safe(undef) unless defined $name;
    my $n=$name;
        my $param=shift;
    my $f=substr $name,0,1;
    my $l=substr $name,-1,1;
    my $escape=shift;
    #TODO
    confess $param unless ref $param;
    confess $escape unless defined $escape;
    #confess @_ unless @_;
    #TODO
        return $dtlv->safe(substr $name, 1, -1) if $f eq "'" and $l eq "'" or $f eq '"' and $l eq '"';
    return $dtlv->safe(descap(substr $name, 1, -1)) if $f eq "`" and $l eq "`";
    if ($name eq "block.super" and $param->{"block.super"}) {
        return $dtlv->safe($param->{"block.super"}->string($param,@_)) if Scalar::Util::blessed($param->{"block.super"});
        return $dtlv->safe($param->{"block.super"}->($param,@_)) if ref $param->{"block.super"} eq "CODE";
    }
    return $dtlv->new($param->{$name},!$escape) if exists $param->{$name};
    my @tree=split/\./,$name;
    $name=shift @tree;
    unless (exists $param->{$name}) {
        return $dtlv->safe($n) if $n!~/[^\d\-\.\,\e]/;
        if ($Dotiac::DTL::cycle{$name} and $Dotiac::DTL::cycle{$name}->[1]) {
            return $dtlv->safe("") if $Dotiac::DTL::included{"cycle_$name"}++;
            my $r=devar_raw($Dotiac::DTL::cycle{$name}->[2]->[$Dotiac::DTL::cycle{$name}->[0]-1 % $Dotiac::DTL::cycle{$name}->[1]],$param,$escape,@_);
            $Dotiac::DTL::included{"cycle_$name"}=0;
            return $r;
        }
        return $dtlv->safe(undef) ;
    }
    $param=$param->{$name};
    while (defined(my $name = shift @tree)) {
        my $r = reftype $param;
        if ($r) {
            if ($r eq "HASH") {
                if (not exists $param->{$name}) {
                    return $dtlv->safe(undef) unless blessed $param;
                }
                else {
                    $param=$param->{$name};
                    next;
                }
            }
            elsif ($r eq "ARRAY") {
                if ($name=~m/[^-\d]/) {
                    return $dtlv->safe(undef) unless blessed $param;
                }
                else {
                    if (not exists $param->[$name]) {
                        return $dtlv->safe(undef) unless blessed $param;
                    }
                    else {
                        $param=$param->[$name];
                        next;
                    }
                }
            }
        }
        if (blessed $param) {
            return $dtlv->safe(undef) unless $Dotiac::DTL::ALLOW_METHOD_CALLS;
            if ($param->can($name)) {
                $param=$param->$name();
                next;
            }
            elsif ($param->can("__getitem__")) {
                my $x;
                eval {
                    $x=$param->__getitem__($name);
                    1;
                } or return $dtlv->safe(undef);
                if (defined $x) {
                    $param=$x;
                    next;
                }
            }
            return $dtlv->safe(undef);
        }
        return $dtlv->safe($n) if $n!~/[^\d\-\.\,\e]/;
        return $dtlv->safe(undef);
    }
    return $dtlv->new($param,!$escape);
}
קישור קבוע  #bpftrace   #dtrace   #modperl   #solaris  

 


הערות  


קבצים מצורפים  

קישורים  


אינדקס

היוקה



NonFunctional בדיקות


יחסי תלות בשפה האנגלית

  • מה זה Smart Content Dependency Management™?— הבנה ברורה של גרף התלות של אתר האינטרנט שלך תבטיח שתוכל למקסם את הביצועים של טכנולוגיית הבנייה שלנו בקנה מידה ... יום א׳, 28 אפר׳ 2024

 

  • גית וללא דחיה— יש הבחנה ברורה בין ההיסטוריה "מחויבות" לבין ההיסטוריה "העלאה" ... יום א׳, 28 אפר׳ 2024

 

  • רשימות דיוור— כתובות זמניות אלה הן anathema ל `ezmlm-idx`'s מנוי ומערכות מתינות ... שבת, 27 אפר׳ 2024

 

  • מדריך אבטחת מידע— יש להתייחס לכל הנתונים שמקורם ב-UNIX בזמן ריצה **קריאת מערכת** כ-**tainted** ... שבת, 27 אפר׳ 2024

 

  • ביצועי יישומים— מפתחים רבים נופלים למלכודת של חשיבה אופטימיזציה ביצועים היא על הפיכת כל שורת קוד ליעילה ככל האפשר. ... יום ג׳, 23 אפר׳ 2024


COVID-19 במרץ 2020

  • צמיחה מעריכית ו-COVID-19— קח את הזמן שלך עם **המתמטיקה** סעיף — חשוב להיות צרכן משכיל של סטטיסטיקה הרלוונטית למגפה הנוכחית ... יום ב׳, 30 ינו׳ 2023

 

  • על בעיית הספאם...— התוסף היחיד הטוב ביותר עבור `Qpsmtpd`למרות שקשה להבין מדוע ... יום א׳, 29 ינו׳ 2023

היפרבולית Honeycomb


 

  • תנועת DevOps— הרעיון הגדול מאחורי "התנועה" הוא לא רק לתת למפתחים יותר חבל ... יום ו׳, 15 דצמ׳ 2023

 

  • כיף עם htop— תכונות htop מתקדמות בפלטפורמות יוניקס פופולריות ... יום ה׳, 19 ינו׳ 2023

ארכיטקטורת מידע

  • ארכיטקטורת מידע— כל סולם הטכנולוגיות הרלוונטי לעיצוב, להצגה, ליחסים ולאילוצים ארכיטקטוניים המכסים כל כתובת URL שבה אתה משרת ... יום ב׳, 11 מרץ 2024

זפת ונוצות

  • Apache HTTPd Devs נחשב מזיק— פיליפ לא ידע כל כך טוב אז היה עד כמה [מציצה, vapid, וטריטוריאלית](https://www.mail-archive.com/dev@httpd.apache.org/msg77781.html) הקבוצה הזו הפכה ... יום ו׳, 26 אפר׳ 2024