| Filename | /usr/libdata/perl5/OpenBSD/PackageName.pm |
| Statements | Executed 57857 statements in 220ms |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 2 | 1 | 1 | 79.4ms | 141ms | OpenBSD::PackageName::compile_stemlist |
| 2 | 1 | 1 | 57.9ms | 69.4ms | OpenBSD::PackageLocator::_compiled_stemlist::find_partial |
| 9688 | 1 | 1 | 51.9ms | 61.7ms | OpenBSD::PackageName::splitstem |
| 9688 | 1 | 1 | 9.78ms | 9.78ms | OpenBSD::PackageName::CORE:match (opcode) |
| 9352 | 1 | 1 | 5.79ms | 5.79ms | OpenBSD::PackageLocator::_compiled_stemlist::CORE:match (opcode) |
| 9352 | 1 | 1 | 5.71ms | 5.71ms | OpenBSD::PackageLocator::_compiled_stemlist::CORE:regcomp (opcode) |
| 2 | 1 | 1 | 2.18ms | 143ms | OpenBSD::PackageName::avail2stems |
| 1 | 1 | 1 | 56µs | 66µs | OpenBSD::PackageInfo::BEGIN@18 |
| 1 | 1 | 1 | 31µs | 50µs | OpenBSD::PackageInfo::BEGIN@19 |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageLocator::_compiled_stemlist::add |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageLocator::_compiled_stemlist::delete |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageLocator::_compiled_stemlist::find |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::Name::compare |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::Name::flavor_string |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::Name::has_issues |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::Name::to_pattern |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::Name::to_string |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::Stem::has_issues |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::Stem::to_pattern |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::Stem::to_string |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::dewey::compare |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::dewey::dewey_compare |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::dewey::from_string |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::dewey::make |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::dewey::suffix_compare |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::dewey::to_string |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::from_string |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::is_stem |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::new_from_string |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::splitname |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::url2pkgname |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::version::compare |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::version::from_string |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::version::has_issues |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::version::p |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::version::pnum_compare |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::version::to_string |
| 0 | 0 | 0 | 0s | 0s | OpenBSD::PackageName::version::v |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | # ex:ts=8 sw=4: | ||||
| 2 | # $OpenBSD: PackageName.pm,v 1.52 2014/03/18 18:53:29 espie Exp $ | ||||
| 3 | # | ||||
| 4 | # Copyright (c) 2003-2010 Marc Espie <espie@openbsd.org> | ||||
| 5 | # | ||||
| 6 | # Permission to use, copy, modify, and distribute this software for any | ||||
| 7 | # purpose with or without fee is hereby granted, provided that the above | ||||
| 8 | # copyright notice and this permission notice appear in all copies. | ||||
| 9 | # | ||||
| 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
| 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
| 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||
| 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
| 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||
| 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||||
| 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
| 17 | |||||
| 18 | 2 | 118µs | 2 | 75µs | # spent 66µs (56+10) within OpenBSD::PackageInfo::BEGIN@18 which was called:
# once (56µs+10µs) by OpenBSD::PackageInfo::BEGIN@29 at line 18 # spent 66µs making 1 call to OpenBSD::PackageInfo::BEGIN@18
# spent 10µs making 1 call to strict::import |
| 19 | 2 | 7.20ms | 2 | 70µs | # spent 50µs (31+20) within OpenBSD::PackageInfo::BEGIN@19 which was called:
# once (31µs+20µs) by OpenBSD::PackageInfo::BEGIN@29 at line 19 # spent 50µs making 1 call to OpenBSD::PackageInfo::BEGIN@19
# spent 20µs making 1 call to warnings::import |
| 20 | |||||
| 21 | package OpenBSD::PackageName; | ||||
| 22 | |||||
| 23 | sub url2pkgname($) | ||||
| 24 | { | ||||
| 25 | my $name = $_[0]; | ||||
| 26 | $name =~ s|.*/||; | ||||
| 27 | $name =~ s|\.tgz$||; | ||||
| 28 | |||||
| 29 | return $name; | ||||
| 30 | } | ||||
| 31 | |||||
| 32 | # see packages-specs(7) | ||||
| 33 | sub splitname | ||||
| 34 | { | ||||
| 35 | my $n = shift; | ||||
| 36 | if ($n =~ /^(.*?)\-(\d.*)$/o) { | ||||
| 37 | my $stem = $1; | ||||
| 38 | my $rest = $2; | ||||
| 39 | my @all = split /\-/o, $rest; | ||||
| 40 | return ($stem, @all); | ||||
| 41 | } else { | ||||
| 42 | return ($n); | ||||
| 43 | } | ||||
| 44 | } | ||||
| 45 | |||||
| 46 | 1 | 4µs | my $cached = {}; | ||
| 47 | |||||
| 48 | sub from_string | ||||
| 49 | { | ||||
| 50 | my ($class, $s) = @_; | ||||
| 51 | return $cached->{$s} //= $class->new_from_string($s); | ||||
| 52 | } | ||||
| 53 | |||||
| 54 | sub new_from_string | ||||
| 55 | { | ||||
| 56 | my ($class, $n) = @_; | ||||
| 57 | if ($n =~ /^(.*?)\-(\d.*)$/o) { | ||||
| 58 | my $stem = $1; | ||||
| 59 | my $rest = $2; | ||||
| 60 | my @all = split /\-/o, $rest; | ||||
| 61 | my $version = OpenBSD::PackageName::version->from_string(shift @all); | ||||
| 62 | return bless { | ||||
| 63 | stem => $stem, | ||||
| 64 | version => $version, | ||||
| 65 | flavors => { map {($_, 1)} @all }, | ||||
| 66 | }, "OpenBSD::PackageName::Name"; | ||||
| 67 | } else { | ||||
| 68 | return bless { | ||||
| 69 | stem => $n, | ||||
| 70 | }, "OpenBSD::PackageName::Stem"; | ||||
| 71 | } | ||||
| 72 | } | ||||
| 73 | |||||
| 74 | sub splitstem | ||||
| 75 | # spent 61.7ms (51.9+9.78) within OpenBSD::PackageName::splitstem which was called 9688 times, avg 6µs/call:
# 9688 times (51.9ms+9.78ms) by OpenBSD::PackageName::compile_stemlist at line 98, avg 6µs/call | ||||
| 76 | 9688 | 6.58ms | my $s = shift; | ||
| 77 | 9688 | 75.4ms | 9688 | 9.78ms | if ($s =~ /^(.*?)\-\d/o) { # spent 9.78ms making 9688 calls to OpenBSD::PackageName::CORE:match, avg 1µs/call |
| 78 | return $1; | ||||
| 79 | } else { | ||||
| 80 | return $s; | ||||
| 81 | } | ||||
| 82 | } | ||||
| 83 | |||||
| 84 | sub is_stem | ||||
| 85 | { | ||||
| 86 | my $s = shift; | ||||
| 87 | if ($s =~ m/\-\d/o || $s eq '-') { | ||||
| 88 | return 0; | ||||
| 89 | } else { | ||||
| 90 | return 1; | ||||
| 91 | } | ||||
| 92 | } | ||||
| 93 | |||||
| 94 | sub compile_stemlist | ||||
| 95 | # spent 141ms (79.4+61.7) within OpenBSD::PackageName::compile_stemlist which was called 2 times, avg 70.5ms/call:
# 2 times (79.4ms+61.7ms) by OpenBSD::PackageName::avail2stems at line 108, avg 70.5ms/call | ||||
| 96 | 2 | 4µs | my $hash = {}; | ||
| 97 | 2 | 10µs | for my $n (@_) { | ||
| 98 | 9688 | 22.9ms | 9688 | 61.7ms | my $stem = splitstem($n); # spent 61.7ms making 9688 calls to OpenBSD::PackageName::splitstem, avg 6µs/call |
| 99 | 9688 | 14.7ms | $hash->{$stem} = {} unless defined $hash->{$stem}; | ||
| 100 | 9688 | 21.2ms | $hash->{$stem}->{$n} = 1; | ||
| 101 | } | ||||
| 102 | 2 | 29µs | bless $hash, "OpenBSD::PackageLocator::_compiled_stemlist"; | ||
| 103 | } | ||||
| 104 | |||||
| 105 | sub avail2stems | ||||
| 106 | # spent 143ms (2.18+141) within OpenBSD::PackageName::avail2stems which was called 2 times, avg 71.6ms/call:
# 2 times (2.18ms+141ms) by OpenBSD::PackageRepository::stemlist at line 171 of OpenBSD/PackageRepository.pm, avg 71.6ms/call | ||||
| 107 | 2 | 1.59ms | my @avail = @_; | ||
| 108 | 2 | 542µs | 2 | 141ms | return OpenBSD::PackageName::compile_stemlist(@avail); # spent 141ms making 2 calls to OpenBSD::PackageName::compile_stemlist, avg 70.5ms/call |
| 109 | } | ||||
| 110 | |||||
| 111 | package OpenBSD::PackageLocator::_compiled_stemlist; | ||||
| 112 | |||||
| 113 | sub find | ||||
| 114 | { | ||||
| 115 | my ($self, $stem) = @_; | ||||
| 116 | return keys %{$self->{$stem}}; | ||||
| 117 | } | ||||
| 118 | |||||
| 119 | sub add | ||||
| 120 | { | ||||
| 121 | my ($self, $pkgname) = @_; | ||||
| 122 | my $stem = OpenBSD::PackageName::splitstem($pkgname); | ||||
| 123 | $self->{$stem}->{$pkgname} = 1; | ||||
| 124 | } | ||||
| 125 | |||||
| 126 | sub delete | ||||
| 127 | { | ||||
| 128 | my ($self, $pkgname) = @_; | ||||
| 129 | my $stem = OpenBSD::PackageName::splitstem($pkgname); | ||||
| 130 | delete $self->{$stem}->{$pkgname}; | ||||
| 131 | if(keys %{$self->{$stem}} == 0) { | ||||
| 132 | delete $self->{$stem}; | ||||
| 133 | } | ||||
| 134 | } | ||||
| 135 | |||||
| 136 | sub find_partial | ||||
| 137 | # spent 69.4ms (57.9+11.5) within OpenBSD::PackageLocator::_compiled_stemlist::find_partial which was called 2 times, avg 34.7ms/call:
# 2 times (57.9ms+11.5ms) by OpenBSD::Search::PartialStem::match at line 166 of OpenBSD/Search.pm, avg 34.7ms/call | ||||
| 138 | 2 | 3µs | my ($self, $partial) = @_; | ||
| 139 | 2 | 3µs | my @result = (); | ||
| 140 | 2 | 9.58ms | while (my ($stem, $pkgs) = each %$self) { | ||
| 141 | 9352 | 59.7ms | 18704 | 11.5ms | next unless $stem =~ /\Q$partial\E/i; # spent 5.79ms making 9352 calls to OpenBSD::PackageLocator::_compiled_stemlist::CORE:match, avg 620ns/call
# spent 5.71ms making 9352 calls to OpenBSD::PackageLocator::_compiled_stemlist::CORE:regcomp, avg 611ns/call |
| 142 | 40 | 121µs | push(@result, keys %$pkgs); | ||
| 143 | } | ||||
| 144 | 2 | 19µs | return @result; | ||
| 145 | } | ||||
| 146 | |||||
| 147 | package OpenBSD::PackageName::dewey; | ||||
| 148 | |||||
| 149 | 1 | 2µs | my $cache = {}; | ||
| 150 | |||||
| 151 | sub from_string | ||||
| 152 | { | ||||
| 153 | my ($class, $string) = @_; | ||||
| 154 | my $o = bless { deweys => [ split(/\./o, $string) ], | ||||
| 155 | suffix => '', suffix_value => 0}, $class; | ||||
| 156 | if ($o->{deweys}->[-1] =~ m/^(\d+)(rc|beta|pre|pl)(\d*)$/) { | ||||
| 157 | $o->{deweys}->[-1] = $1; | ||||
| 158 | $o->{suffix} = $2; | ||||
| 159 | $o->{suffix_value} = $3; | ||||
| 160 | } | ||||
| 161 | return $o; | ||||
| 162 | } | ||||
| 163 | |||||
| 164 | sub make | ||||
| 165 | { | ||||
| 166 | my ($class, $string) = @_; | ||||
| 167 | return $cache->{$string} //= $class->from_string($string); | ||||
| 168 | } | ||||
| 169 | |||||
| 170 | sub to_string | ||||
| 171 | { | ||||
| 172 | my $self = shift; | ||||
| 173 | my $r = join('.', @{$self->{deweys}}); | ||||
| 174 | if ($self->{suffix}) { | ||||
| 175 | $r .= $self->{suffix} . $self->{suffix_value}; | ||||
| 176 | } | ||||
| 177 | return $r; | ||||
| 178 | } | ||||
| 179 | |||||
| 180 | sub suffix_compare | ||||
| 181 | { | ||||
| 182 | my ($a, $b) = @_; | ||||
| 183 | if ($a->{suffix} eq $b->{suffix}) { | ||||
| 184 | return $a->{suffix_value} <=> $b->{suffix_value}; | ||||
| 185 | } | ||||
| 186 | if ($a->{suffix} eq 'pl') { | ||||
| 187 | return 1; | ||||
| 188 | } | ||||
| 189 | if ($b->{suffix} eq 'pl') { | ||||
| 190 | return -1; | ||||
| 191 | } | ||||
| 192 | |||||
| 193 | if ($a->{suffix} gt $b->{suffix}) { | ||||
| 194 | return -suffix_compare($b, $a); | ||||
| 195 | } | ||||
| 196 | # order is '', beta, pre, rc | ||||
| 197 | # we know that a < b, | ||||
| 198 | if ($a->{suffix} eq '') { | ||||
| 199 | return 1; | ||||
| 200 | } | ||||
| 201 | if ($a->{suffix} eq 'beta') { | ||||
| 202 | return -1; | ||||
| 203 | } | ||||
| 204 | # refuse to compare pre vs. rc | ||||
| 205 | return 0; | ||||
| 206 | } | ||||
| 207 | |||||
| 208 | sub compare | ||||
| 209 | { | ||||
| 210 | my ($a, $b) = @_; | ||||
| 211 | # Try a diff in dewey numbers first | ||||
| 212 | for (my $i = 0; ; $i++) { | ||||
| 213 | if (!defined $a->{deweys}->[$i]) { | ||||
| 214 | if (!defined $b->{deweys}->[$i]) { | ||||
| 215 | last; | ||||
| 216 | } else { | ||||
| 217 | return -1; | ||||
| 218 | } | ||||
| 219 | } | ||||
| 220 | if (!defined $b->{deweys}->[$i]) { | ||||
| 221 | return 1; | ||||
| 222 | } | ||||
| 223 | my $r = dewey_compare($a->{deweys}->[$i], | ||||
| 224 | $b->{deweys}->[$i]); | ||||
| 225 | return $r if $r != 0; | ||||
| 226 | } | ||||
| 227 | return suffix_compare($a, $b); | ||||
| 228 | } | ||||
| 229 | |||||
| 230 | sub dewey_compare | ||||
| 231 | { | ||||
| 232 | my ($a, $b) = @_; | ||||
| 233 | # numerical comparison | ||||
| 234 | if ($a =~ m/^\d+$/o and $b =~ m/^\d+$/o) { | ||||
| 235 | return $a <=> $b; | ||||
| 236 | } | ||||
| 237 | # added lowercase letter | ||||
| 238 | if ("$a.$b" =~ m/^(\d+)([a-z]?)\.(\d+)([a-z]?)$/o) { | ||||
| 239 | my ($an, $al, $bn, $bl) = ($1, $2, $3, $4); | ||||
| 240 | if ($an != $bn) { | ||||
| 241 | return $an <=> $bn; | ||||
| 242 | } else { | ||||
| 243 | return $al cmp $bl; | ||||
| 244 | } | ||||
| 245 | } | ||||
| 246 | return $a cmp $b; | ||||
| 247 | } | ||||
| 248 | |||||
| 249 | package OpenBSD::PackageName::version; | ||||
| 250 | |||||
| 251 | sub p | ||||
| 252 | { | ||||
| 253 | my $self = shift; | ||||
| 254 | |||||
| 255 | return defined $self->{p} ? $self->{p} : -1; | ||||
| 256 | } | ||||
| 257 | |||||
| 258 | sub v | ||||
| 259 | { | ||||
| 260 | my $self = shift; | ||||
| 261 | |||||
| 262 | return defined $self->{v} ? $self->{v} : -1; | ||||
| 263 | } | ||||
| 264 | |||||
| 265 | sub from_string | ||||
| 266 | { | ||||
| 267 | my ($class, $string) = @_; | ||||
| 268 | my $o = bless {}, $class; | ||||
| 269 | if ($string =~ m/^(.*)v(\d+)$/o) { | ||||
| 270 | $o->{v} = $2; | ||||
| 271 | $string = $1; | ||||
| 272 | } | ||||
| 273 | if ($string =~ m/^(.*)p(\d+)$/o) { | ||||
| 274 | $o->{p} = $2; | ||||
| 275 | $string = $1; | ||||
| 276 | } | ||||
| 277 | $o->{dewey} = OpenBSD::PackageName::dewey->make($string); | ||||
| 278 | |||||
| 279 | return $o; | ||||
| 280 | } | ||||
| 281 | |||||
| 282 | sub to_string | ||||
| 283 | { | ||||
| 284 | my $o = shift; | ||||
| 285 | my $string = $o->{dewey}->to_string; | ||||
| 286 | if (defined $o->{p}) { | ||||
| 287 | $string .= 'p'.$o->{p}; | ||||
| 288 | } | ||||
| 289 | if (defined $o->{v}) { | ||||
| 290 | $string .= 'v'.$o->{v}; | ||||
| 291 | } | ||||
| 292 | return $string; | ||||
| 293 | } | ||||
| 294 | |||||
| 295 | sub pnum_compare | ||||
| 296 | { | ||||
| 297 | my ($a, $b) = @_; | ||||
| 298 | return $a->p <=> $b->p; | ||||
| 299 | } | ||||
| 300 | |||||
| 301 | sub compare | ||||
| 302 | { | ||||
| 303 | my ($a, $b) = @_; | ||||
| 304 | # Simple case: epoch number | ||||
| 305 | if ($a->v != $b->v) { | ||||
| 306 | return $a->v <=> $b->v; | ||||
| 307 | } | ||||
| 308 | # Simple case: only p number differs | ||||
| 309 | if ($a->{dewey} eq $b->{dewey}) { | ||||
| 310 | return $a->pnum_compare($b); | ||||
| 311 | } | ||||
| 312 | |||||
| 313 | return $a->{dewey}->compare($b->{dewey}); | ||||
| 314 | } | ||||
| 315 | |||||
| 316 | sub has_issues | ||||
| 317 | { | ||||
| 318 | my $self = shift; | ||||
| 319 | if ($self->{dewey}{deweys}[-1] =~ m/v\d+$/ && defined $self->{p}) { | ||||
| 320 | return ("correct order is pNvM"); | ||||
| 321 | } else { | ||||
| 322 | return (); | ||||
| 323 | } | ||||
| 324 | } | ||||
| 325 | |||||
| 326 | package OpenBSD::PackageName::Stem; | ||||
| 327 | sub to_string | ||||
| 328 | { | ||||
| 329 | my $o = shift; | ||||
| 330 | return $o->{stem}; | ||||
| 331 | } | ||||
| 332 | |||||
| 333 | sub to_pattern | ||||
| 334 | { | ||||
| 335 | my $o = shift; | ||||
| 336 | return $o->{stem}.'-*'; | ||||
| 337 | } | ||||
| 338 | |||||
| 339 | sub has_issues | ||||
| 340 | { | ||||
| 341 | my $self = shift; | ||||
| 342 | return ("is a stem"); | ||||
| 343 | } | ||||
| 344 | |||||
| 345 | package OpenBSD::PackageName::Name; | ||||
| 346 | sub flavor_string | ||||
| 347 | { | ||||
| 348 | my $o = shift; | ||||
| 349 | return join('-', sort keys %{$o->{flavors}}); | ||||
| 350 | } | ||||
| 351 | |||||
| 352 | sub to_string | ||||
| 353 | { | ||||
| 354 | my $o = shift; | ||||
| 355 | return join('-', $o->{stem}, $o->{version}->to_string, | ||||
| 356 | sort keys %{$o->{flavors}}); | ||||
| 357 | } | ||||
| 358 | |||||
| 359 | sub to_pattern | ||||
| 360 | { | ||||
| 361 | my $o = shift; | ||||
| 362 | return join('-', $o->{stem}, '*', $o->flavor_string); | ||||
| 363 | } | ||||
| 364 | |||||
| 365 | sub compare | ||||
| 366 | { | ||||
| 367 | my ($a, $b) = @_; | ||||
| 368 | if ($a->{stem} ne $b->{stem} || $a->flavor_string ne $b->flavor_string) { | ||||
| 369 | return undef; | ||||
| 370 | } | ||||
| 371 | return $a->{version}->compare($b->{version}); | ||||
| 372 | } | ||||
| 373 | |||||
| 374 | sub has_issues | ||||
| 375 | { | ||||
| 376 | my $self = shift; | ||||
| 377 | return ((map {"flavor $_ can't start with digit"} | ||||
| 378 | grep { /^\d/ } keys %{$self->{flavors}}), | ||||
| 379 | $self->{version}->has_issues); | ||||
| 380 | } | ||||
| 381 | |||||
| 382 | 1 | 15µs | 1; | ||
# spent 5.79ms within OpenBSD::PackageLocator::_compiled_stemlist::CORE:match which was called 9352 times, avg 620ns/call:
# 9352 times (5.79ms+0s) by OpenBSD::PackageLocator::_compiled_stemlist::find_partial at line 141, avg 620ns/call | |||||
# spent 5.71ms within OpenBSD::PackageLocator::_compiled_stemlist::CORE:regcomp which was called 9352 times, avg 611ns/call:
# 9352 times (5.71ms+0s) by OpenBSD::PackageLocator::_compiled_stemlist::find_partial at line 141, avg 611ns/call | |||||
# spent 9.78ms within OpenBSD::PackageName::CORE:match which was called 9688 times, avg 1µs/call:
# 9688 times (9.78ms+0s) by OpenBSD::PackageName::splitstem at line 77, avg 1µs/call |