我最近尝试比较不同的 python 和 C++ 矩阵库的线性代数性能,以便了解在即将进行的项目中使用哪些库。虽然线性代数运算有多种类型,但我选择主要关注矩阵求逆,因为它似乎会给出奇怪的结果。我在下面编写了以下代码进行比较,但我想我一定做错了什么。
C++代码
#include <iostream>
#include "eigen/Eigen/Dense"
#include <xtensor/xarray.hpp>
#include <xtensor/xio.hpp>
#include <xtensor/xview.hpp>
#include <xtensor/xrandom.hpp>
#include <xtensor-blas/xlinalg.hpp> //-lblas -llapack for cblas, -llapack -L OpenBLAS/OpenBLAS_Install/lib -l:libopenblas.a -pthread for openblas
//including accurate timer
#include <chrono>
//including vector array
#include <vector>
void basicMatrixComparisonEigen(std::vector<int> dims, int numrepeats = 1000);
void basicMatrixComparisonXtensor(std::vector<int> dims, int numrepeats = 1000);
int main()
{
std::vector<int> sizings{1, 10, 100, 1000, 10000, 100000};
basicMatrixComparisonEigen(sizings, 2);
basicMatrixComparisonXtensor(sizings,2);
return 0;
}
void basicMatrixComparisonEigen(std::vector<int> dims, int numrepeats)
{
std::chrono::high_resolution_clock::time_point t1;
std::chrono::high_resolution_clock::time_point …Run Code Online (Sandbox Code Playgroud) 我最近一直在使用GDB来调试C++程序。对于标准用法,我通常这样做:
$ cd compiledir
$ compilescript
$ gdb compiled.out
$ run inputfile
Run Code Online (Sandbox Code Playgroud)
compilescript是一个程序,用于编译我正在开发的特定软件的代码,并且仅适用于Compiledir。它读取外部文件以获取编译器标志。对于 gdb,我包括了必要的-g标志。这适合我通过文本界面进行调试。然而,与 IDE 相比,这个文本界面使用起来越来越令人沮丧,而且我知道 Visual Studio 默认使用 gdb 作为后端来调试 C++ 文件。
首先,我让 Visual Studio 生成默认的 C++ 调试配置并尝试更改命令,但我不知道它在做什么,并且似乎没有太多关于制作自定义构建/调试配置的文档,特别是对于VScode 的 Linux 版本。
目前我有:
launch.json(默认)
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++ - Build and debug active file",
"type": "cppdbg",
"request": "launch", …Run Code Online (Sandbox Code Playgroud)