tools/footprint/linear-regression.awk

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rwxr-xr-x

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 # This Source Code Form is subject to the terms of the Mozilla Public
     2 # License, v. 2.0. If a copy of the MPL was not distributed with this
     3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
     5 function regress(DATAPOINTS,SX,SY,SXY,SX2)
     6 {
     7    b1 = (DATAPOINTS * SXY - SX * SY) / (DATAPOINTS * SX2 - SX * SX);
     8    b0 = (SY - b1 * SX ) / DATAPOINTS;
     9    return b1 " * x + " b0; 
    10 }
    12 BEGIN {
    13         if (!Skip) Skip = 0;
    14         if (Interval) 
    15         {
    16            Count = 0;
    17            IntervalCount = 0;
    18         }
    19       }
    21 NR>Skip {
    22         sx += $1;
    23         sy += $2;
    24         sxy += $1 * $2;
    25         sx2 += $1 * $1;
    26         #print NR " " sx " " sy " " sxy " " sx2
    28         if (Interval)
    29         {
    30            if(Count == Interval-1)
    31            {
    32               IntervalCount += 1;
    34               print NR-Count, "-", NR, ":  ", regress(Count,isx,isy,isxy,isx2);
    36               Count = 0;
    37               isx = 0;
    38               isy = 0;
    39               isxy = 0;
    40               isx2 = 0;
    41            }
    42            else
    43            {
    44               Count += 1;
    45               isx += $1;
    46               isy += $2;
    47               isxy += $1 * $2;
    48               isx2 += $1 * $1;
    49            }
    50         }
    51      }
    53 END {
    54        if(Interval) {
    55           print NR-Count, "-", NR, ":  ", regress(Count,isx,isy,isxy,isx2);
    56        }
    57        print regress(NR-Skip, sx, sy, sxy, sx2); 
    58     }

mercurial