问题描述
我正在尝试使用 while 循环处理向量。目前,它一次按顺序获取每个元素。有没有办法与人造丝并行处理矢量元素并获得相同的结果。它会提高下面给出的代码的性能吗?基本上我从 tcp 客户端获取连续的消息并将它们转换为向量然后处理它们。我想让处理部分更快。示例代码如下。
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<h3>TEST PAGE</h3>
<h5>Main Customer</h5>
<ul>
<li>ID: {{ MainCustomer.id }}</li>
<li>Name: {{ MainCustomer.name }}</li>
<li>Username: {{ MainCustomer.username }}</li>
<li>E-mail: {{ MainCustomer.email }}</li>
</ul>
</div>
</template>
<script>
import Customer from "./../class/Customer";
export default {
name: "HelloWorld",props: {
msg: String,},data() {
let MainCustomer = new Customer(
1,"Tony","tony.stark@avengers.com","Tony007","myPassword123"
);
return {
MainCustomer: MainCustomer,};
},};
</script>
解决方法
您的代码之所以慢并不是因为您错过了并行机会,而是因为您正在以一种让人联想到 Shlemiel the Painter 算法的方式复制更长的字符串。请记住,复制字符串以字符串长度的线性时间运行。
(孩子们,这就是为什么基础计算机科学如此重要!)
由于您的代码片段的某些部分与您的实际问题无关(例如 choice
参数),我冒昧地将它们从我的答案中删除。简化你的代码后,我得到的是这样的:
fn main() {
let domain = "example.com";
let path = "s1/s2/s3/s4/s5/s6/s7";
let matches = path.match_indices('/');
for (pos,_) in matches {
println!("{}/{}:",domain,&path[0..pos]);
}
println!("{}/{},",path)
}
要打印完整的 path
的前缀,您只需要从 path
的开头(即第 0
个字符)开始到刚结束的切片在相应的 '/'
之前(即第 pos
个字符)。这解释了 for
循环中的行。