Thread Berechnung der Laenge von Unterbrechungen im HSDPA netz
(37 answers)
Opened by bowkatz at 2009-07-08 10:02
Ich hatte gerade mal etwas Lust zu spielen:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 #!/usr/bin/perl # strict und warnings sollten # immer Pflicht sein use strict; use warnings; # hier werden die ganzen daten gespeichert. # ich nehme ein array, damit ich die zeitliche # reihenfolge beibehalten kann. my @data; my $counter = 0; my $in_period = 0; my $last_time = ''; # <DATA> ist der "Filehandle" für __DATA__ # hier kann man vorher eine Dateinehmen und # einen beliebigen Filehandle einsetzen while( my $line = <DATA> ) { # ueberspringe die erste zeile, da sie nur # metainformationen enthaelt next if $. == 1; # entferne den zeilenumbruch chomp $line; # teile den string an den leerzeichen my ($time,$frams,$bytes) = split /\s+/, $line; # wenn daten gesendet wurden unless( $bytes == 0 ) { # und vorher keine daten gesendet wurden if( $in_period ) { # speichere die endzeit der auszeit $data[$counter]->{stop} = $last_time; # zaehle den index hoch, da jetzt eine neue # auszeit bei der nächsten 0 beginnt $counter++; } # da wieder daten gesendet wurden, bin ich # nicht mehr in der auszeit $in_period = 0; # gehe zum nächsten schleifendurchlauf next; } # da ich bei gesendeten daten vorher mit next # weitergegangen waere, bin ich jetzt auf jedenfall # in einer auszeit $in_period = 1; # setze die startzeit $data[$counter]->{start} = $time unless $data[$counter]->{start}; # eine weitere sekunde wurden keine daten gesendet $data[$counter]->{sum}++; $last_time = $time; } # gebe die ueberschriften aus, zu den formaten # siehe perldoc -f sprintf print sprintf "%20s\t%20s\t%10s\n", 'Start', 'Stop', 'Sekunden'; # fuer jede auszeit for my $entry ( @data ) { # gib die daten aus print sprintf "%20s\t%20s\t%10d\n", $entry->{start}, $entry->{stop}, $entry->{sum}; } __DATA__ Time |frames| bytes 000.000-001.000 1 74 001.000-002.000 0 0 002.000-003.000 0 0 003.000-004.000 6 1300 004.000-005.000 16 3102 005.000-006.000 61 36106 006.000-007.000 5 3295 007.000-008.000 0 0 008.000-009.000 0 0 009.000-010.000 0 0 010.000-011.000 0 0 011.000-012.000 0 0 012.000-013.000 0 0 013.000-014.000 0 0 014.000-015.000 0 0 015.000-016.000 0 0 016.000-017.000 0 0 017.000-018.000 0 0 018.000-019.000 0 0 019.000-020.000 0 0 020.000-021.000 0 0 021.000-022.000 0 0 022.000-023.000 0 0 023.000-024.000 0 0 024.000-025.000 1 74 025.000-026.000 0 0 026.000-027.000 0 0 027.000-028.000 0 0 028.000-029.000 0 0 029.000-030.000 0 0 030.000-031.000 0 0 031.000-032.000 0 0 032.000-033.000 0 0 033.000-034.000 1 833 034.000-035.000 49 29217 035.000-036.000 1 54 036.000-037.000 0 0 037.000-038.000 0 0 038.000-039.000 3 1047 039.000-040.000 12 2106 040.000-041.000 120 58336 041.000-042.000 1 54 042.000-043.000 1 74 043.000-044.000 0 0 044.000-045.000 0 0 045.000-046.000 0 0 046.000-047.000 0 0 047.000-048.000 0 0 048.000-049.000 1 74 049.000-050.000 0 0 050.000-051.000 0 0 051.000-052.000 0 0 052.000-053.000 0 0 053.000-054.000 0 0 054.000-055.000 0 0 055.000-056.000 0 0 056.000-057.000 0 0 057.000-058.000 0 0 058.000-059.000 0 0 059.000-060.000 0 0 060.000-061.000 1 74 061.000-062.000 0 0 062.000-063.000 0 0 063.000-064.000 0 0 064.000-065.000 1 72 065.000-066.000 5 837 066.000-067.000 265 169683 067.000-068.000 66 38246 068.000-069.000 16 6733 069.000-070.000 3 951 070.000-071.000 0 0 071.000-072.000 0 0 072.000-073.000 1 74 073.000-074.000 0 0 074.000-075.000 0 0 075.000-076.000 0 0 076.000-077.000 0 0 077.000-078.000 0 0 078.000-079.000 0 0 079.000-080.000 0 0 080.000-081.000 1 75 081.000-082.000 5 954 082.000-083.000 65 39896 083.000-084.000 178 98021 084.000-085.000 29 5281 085.000-086.000 0 0 086.000-087.000 2 48 087.000-088.000 0 0 088.000-089.000 0 0 089.000-090.000 0 0 090.000-091.000 0 0 091.000-092.000 14 476 092.000-093.000 2 96 093.000-094.000 2 96 094.000-095.000 11 708 095.000-096.000 1 54 096.000-097.000 0 0 097.000-098.000 7 1307 098.000-099.000 113 68332 099.000-100.000 18 13716 100.000-101.000 10 4654 101.000-102.000 2 48 Ausgabe: Code: (dl
)
1 Start Stop Sekunden Last edited: 2009-07-08 21:52:12 +0200 (CEST) OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/) -- Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html Perl-Entwicklung: http://perl-services.de/ |