benchmarking 相关问题

基准测试是在受控环境下比较两个或多个系统或过程的过程,以便有一个定量测量来比较或排序它们。基准标记应该用于关于如何执行基准测试任务或理论问题的问题,而不是用于基准测试结果列表或基准数据请求的问题;这些问题与Stack Overflow无关。

就地向量修改的理论与实际性能的混淆

为了满足高性能数学库的需求,我一直在对各种方法进行基准测试,以在 Rust vecs 上进行就地操作(最好通过引用)。这些方法是: 使用显式...

回答 1 投票 0

为什么此功能在 Intel i3-N305 上的性能比 AMD Ryzen 7 3800X 慢?

我在 Intel i3-N305 3.8GHz 和 AMD Ryzen 7 3800X 3.9GHz PC 上运行了使用 gcc-13 (https://godbolt.org/z/qq5WrE8qx) 编译的相同二进制文件。该代码使用VCL库(https://github.com/vectorclass/

回答 1 投票 0

如何跳过 phoronix-test-suite 初始问题

我想使用 phoronix-test-suite 来对不同提供商的云实例进行基准测试。 然而,自动化似乎陷入困境,因为 phoronix-test-suites 会问三个初始问题

回答 3 投票 0

.NET8 -> ConcurrentDictionary 总是比普通字典快...怎么会这样? [包含基准测试结果和代码]

我想知道我是否应该使用列表或字典,因为我知道我的结构只有很少的项目。所以我做了一个简单的基准测试📊来测试 1、3、10、20 和 50 最快的数据结构......

回答 1 投票 0

如何对 Amazon S3 等云存储系统进行基准测试

我开发了一个云存储系统,使用与Amazon S3相同的API结构。现在我想运行一些关于获取对象数据和对象元数据的性能测试。以这样的方式,我可以

回答 3 投票 0

jmh 基准测试方法在设置方法运行时未运行

我正在尝试在等级项目中运行 jmh 基准测试。 ./gradlew :子项目:jmh 我可以看到设置方法从标准输出执行了两次。但这两个@Benchmark方法似乎没有被执行。 ...

回答 1 投票 0

防火墙性能基准测试

我是一名网络安全专业的学生,最近我被分配了一个项目,制作一个功能齐全的防火墙性能基准测试工具,作为一名新生,我不知道从哪里开始或我的路......

回答 1 投票 0

使用 Criterion 对 Rust 中的随机局部搜索算法进行基准测试(分数)

我有一个评分函数来评估本地搜索算法,其结果因种子而异。该算法是任意的,其运行时间是固定的。尽管标准框架概括了以上...

回答 1 投票 0

Ruby 方法的测量和基准时间

我如何测量 Ruby 中某个方法以及该方法中各个语句所花费的时间。如果您看到下面的方法,我想测量该方法所花费的总时间以及所花费的时间...

回答 6 投票 0

将 uint64_t {0,1} 映射到 float 64 {1.0,-1.0} 的最快方法是什么?

我有一个名为 uintflag 的 64 位无符号整数 uint64_t 标志变量,它只能保存值 0 或 1。 我需要将 0 转换为 1.0,将 1 转换为 -1.0。此转换来自 uint64_t(64 位)...

回答 1 投票 0

将 uint64_teger {0,1} 映射到 float 64 {1.0,-1.0} 的最快方法是什么?

我有一个名为 uintflag 的 64 位 uint64_t 标志变量,它只能保存值 0 或 1。 我需要将 0 转换为 1.0,将 1 转换为 -1.0。此转换是从 uint64_teger(64 位)到 double (...

回答 1 投票 0

将无符号整数 {0,1} 映射到 float 64 {1.0,-1.0} 的最快方法是什么?

我有一个名为 uintflag 的 64 位无符号 int 标志变量,它只能保存值 0 或 1。 我需要将 0 转换为 1.0,将 1 转换为 -1.0。此转换是从无符号整数(64 位)到 ...

回答 1 投票 0

为什么 Rust 的默认排序功能比我的小数组选择排序稍慢?

我对 Rust 还很陌生,所以我可能会错过一些简单的东西。我正在使用 Rust 1.70.0-nightly。这是必要的代码: fn Selection_sort(original_vec: &mut Vec) -> Vec 我对 Rust 还很陌生,所以我可能会错过一些简单的东西。我正在使用 Rust 1.70.0-nightly。这是必要的代码: fn selection_sort(original_vec: &mut Vec<i32>) -> Vec<i32> { for i in 0..original_vec.len()-1 { let mut smallest: usize = i; for j in i+1..original_vec.len() { if original_vec[j] < original_vec[smallest] { smallest = j; } } if smallest != i { original_vec.swap(i, smallest); } }; original_vec.to_vec() } // helper function for testing (uses builtin sort function) fn rust_sort<A, T>(mut array: A) -> A where A: AsMut<[T]>, T: Ord, { let slice = array.as_mut(); slice.sort(); array } const TEST_VECS: [[i32; 10]; 6] = [ [1, 3, 2, 9, 6, 7, 4, 10, 8, 5], [1, 2, 7, 2, 9, 9, 7, 10, 2, 1], [0, 4, 1, 3, 9, 12, 3, 0, 13, 8], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [-1, -5, -10, 1, 10, 2, -123, -34, 0, -32], [i32::MAX, -32984, i32::MIN, 31648, 5349857, -30954, -2343285, 0, 1, i32::MIN], ]; #[bench] fn bench_rust_sort(b: &mut Bencher) { b.iter(|| { for i in TEST_VECS { (&mut i.to_vec()).sort() } }) } #[bench] fn bench_selection_sort(b: &mut Bencher) { b.iter(|| { for i in TEST_VECS { selection_sort(&mut i.to_vec()); } }) } 当我跑步时cargo bench: $ cargo bench Compiling rust-algs v0.1.0 (/home/josia/projects/rust-algs) Finished bench [optimized] target(s) in 0.25s Running unittests src/lib.rs (target/release/deps/rustalgs-ae260c07593c3aad) running 3 tests test test_selection_sort ... ignored test bench_rust_sort ... bench: 106 ns/iter (+/- 8) test bench_selection_sort ... bench: 102 ns/iter (+/- 9) test result: ok. 0 passed; 0 failed; 1 ignored; 2 measured; 0 filtered out; finished in 7.65s 我尝试了很多次,甚至重命名了测试函数来改变测试的顺序。不管怎样,我的自定义选择排序功能仍然执行得更快。我猜问题在于我必须调用一个函数来包装主要的默认排序函数。调用实际函数是行不通的,因为即使我将基准函数中的 TEST_VECS 常量克隆为向量,排序函数也会继续对其进行排序,这不会让其他基准迭代对其进行排序。如果我在基准闭包中克隆常量,它将极大地影响基准迭代的性能,并且我将无法仅对我尝试运行的代码进行基准测试。 我对这些函数进行基准测试的方式是否有问题,或者我的自定义函数是否更快? 您正在转换类型和应对记忆。 将数组转换为向量需要时间。 如果您来自其他语言,您应该知道该常量无法修改。 所以你必须在基准代码中定义测试集。 b:&mut test::Bencher将用作长凳。 b.iter之外的代码不会被计入bench。 所以你必须像这样准备你的代码: #![feature(test)] #![allow(dead_code)] extern crate test; fn selection_sort(original_vec: &mut Vec<i32>) -> Vec<i32> { for i in 0..original_vec.len()-1 { let mut smallest: usize = i; for j in i+1..original_vec.len() { if original_vec[j] < original_vec[smallest] { smallest = j; } } if smallest != i { original_vec.swap(i, smallest); } }; original_vec.to_vec() } const TEST_VECS: [[i32; 10]; 6] = [ [1, 3, 2, 9, 6, 7, 4, 10, 8, 5], [1, 2, 7, 2, 9, 9, 7, 10, 2, 1], [0, 4, 1, 3, 9, 12, 3, 0, 13, 8], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [-1, -5, -10, 1, 10, 2, -123, -34, 0, -32], [i32::MAX, -32984, i32::MIN, 31648, 5349857, -30954, -2343285, 0, 1, i32::MIN], ]; #[bench] fn bench_rust_sort(b: &mut test::Bencher) { let mut test_vecs: Vec<Vec<i32>> = TEST_VECS.iter().map(|v| v.to_vec()).collect(); b.iter(|| { for i in test_vecs.iter_mut() { i.sort() } }) } #[bench] fn bench_selection_sort(b: &mut test::Bencher) { let mut test_vecs: Vec<Vec<i32>> = TEST_VECS.iter().map(|v| v.to_vec()).collect(); b.iter(|| { for i in test_vecs.iter_mut() { selection_sort(i); } }) } fn main(){ } 结果如下: ➜ bench git:(master) ✗ cargo bench Finished bench [optimized] target(s) in 0.00s Running unittests src/main.rs (target/release/deps/bench-5bf7ec1e7001cf33) running 2 tests test bench_rust_sort ... bench: 43 ns/iter (+/- 0) test bench_selection_sort ... bench: 215 ns/iter (+/- 14) test result: ok. 0 passed; 0 failed; 0 ignored; 2 measured; 0 filtered out; finished in 6.40s 我的笔记本电脑运行这个工作台: MacBook Pro 2020 i5,4 核 2.0Ghz。

回答 1 投票 0

为什么 Rust 的默认排序功能比我的选择排序慢?

标题。我对 Rust 很陌生,所以我可能会错过一些简单的东西。我正在使用 Rust 1.70.0-nightly。这是必要的代码: fn Selection_sort(original_vec: &mut Vec) -> Vec&...

回答 1 投票 0

向量化和非向量化函数+ R 中的基准应用

有人可以根据上面的实现示例向我解释向量化函数和非向量化函数之间的区别吗? ? 我使用了 4 种方法(for 循环、映射、应用、矢量化)来

回答 1 投票 0

如何正确进行基准测试

我正在尝试根据同一计算的查找表对计算进行基准测试,但我怀疑在发布时,编译器报告的数据不准确。 我作为调试进行基准测试,然后...

回答 1 投票 0

为什么 C# 中的类型化 JSON 解析比 Node.js JSON.parse 慢很多?

我的字符串中有一个简单的 JSON 对象,我正在比较 C# (.NET core) 和 Node.js 之间解析(反序列化)该对象所用的时间 Node.js 测试: const { 性能 } = require('

回答 1 投票 0

Fio 结果是 IOPS 稳步上升,不是我预期的

我试图以某种方式通过随机读取、随机写入、混合randrw来测试我的rbd存储,但输出不正确,它是一个连续增长的数字。 我的步骤有什么问题吗? 这是...

回答 1 投票 0

在Linux中测试IO性能[已关闭]

如何在Linux中测试IO性能?

回答 8 投票 0

Criterion 货物工作台的构建时间较长,但大型货物构建 --release 则不然

在 Rust 中使用 Brainfuck 解释器时,我注意到当基准包含大型类型时,cargo bench 需要花费非常长的时间来构建 Criterion bench。 作为我的 Brainfuck 的一部分

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.