- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将数千个二进制字节字符串(每个大约 1 兆字节长)转换为 ASC 字符串。这是我一直在做的,而且似乎太慢了:
sub fileToCorrectUTF8Str ($fileName) { # binary file
my $finalString = "";
my $fileBuf = slurp($fileName, :bin);
for @$fileBuf { $finalString = $finalString ~ $_.chr; };
return $finalString;
}
最佳答案
TL;DR 在旧乐道上,.decode
大约快 100 倍。
以更长的形式匹配您的代码:
sub fileToCorrectUTF8Str ($fileName) { # binary file
slurp($fileName, :bin).decode
}
# Create million and 1 bytes long file:
spurt 'foo', "1234\n6789\n" x 1e5 ~ 'Z', :bin;
# (`say` the last character to check work is done)
say .decode.substr(1e6) with slurp 'foo', :bin;
# fileToCorrectUTF8Str 'foo' );
say now - INIT now;
2018.12
乐道,以上
.decode
重约
.05
每百万字节文件的秒数,而不是大约
5
秒为您的解决方案。
@
在
Buf
/
Blob
显式强制 raku 将以前的单个项目(
一个 缓冲区)视为复数(元素列表又名多个项目
s )。这意味着高级迭代,对于一百万个元素缓冲区,立即是一百万个高级迭代/操作,而不仅仅是一个高级操作。
.decode
不仅避免了迭代,而且每个文件只产生一次相对较慢的方法调用开销,而在迭代时可能有一百万
.chr
每个文件的调用。方法调用(至少在语义上)
late-bound与例如调用 sub 而不是方法(sub 通常是早期绑定(bind)的)相比,这在原则上是相对昂贵的。
Buf.Str
错误信息
LTA ?
.Str
在
Buf
或
Blob
(或等效的,例如使用
~
前缀)你会得到一个异常(exception)。目前消息是:
Cannot use a Buf as a string, but you called the Str method on it
.Str
on a Buf
/ Blob
目前说:
In order to convert to a Str you need to use
.decode
.
Buf.Str
有没有改善正在考虑错误消息和/或您是否希望打开一个问题以建议对其进行更改。每移动一 block 石头至少是一次很好的锻炼,随着我们的集体努力变得越来越明智,(我们的观点)
the mountain .
关于arrays - 乐: is there a SUPER fast way to turn an array into a string without the spaces separating the elements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60334347/
在类 Slip ( https://docs.raku.org/type/Slip ) 的 raku 文档以及“列表、序列和数组”文档(幻灯片部分: https://docs.raku.org/lan
当我们使用超出数组边界的索引对数组进行切片时,我们得到的结果是 undefined (Any) 当我们传递与惰性列表相同的切片索引时,我们将获得数组/列表的现有值(并且仅此而已): my @a = ^
FAQ,Int Raku,如何合并,合并两个哈希? 说: my %a = 1 => 2; my %b = 3 => 4, 5 => 6 获取方式%c = 1 => 2, 3 => 4, 5 => 6
FAQ:在 Raku 中,如何检查 String包含一个子串?在哪里和多少次? 我想要 3 个功能,例如: xxx-bool("az and az and az again", "az"); # T
在语法文档中的以下部分: "Always succeed" assertion 我重现了那里提供的示例,并添加了代码来显示解析机制的每个阶段生成的表: use v6.d; grammar Digifi
我试图将文件名中的三个字母与 1000Genomes 项目匹配,并且仅匹配来自 ethnicity_lists/PEL.txt 之类的字符串中的三个字母。我应该只得到 PEL .字符串的其余部分无关紧
我需要将数千个二进制字节字符串(每个大约 1 兆字节长)转换为 ASC 字符串。这是我一直在做的,而且似乎太慢了: sub fileToCorrectUTF8Str ($fileName) { # b
我是一名优秀的程序员,十分优秀!