随着 C# 9.0 的发布,引入了否定空常量模式。
模式匹配的文档指出:
从 C# 9.0 开始,您可以使用否定 null 常量模式来检查非 null,如以下示例所示:
Run Code Online (Sandbox Code Playgroud)if (e is not null) { // ... }
除了语法之外,e is not null
和之间还有什么区别吗?e != null
我很难在 UWP 上的 C++/CX 代码中正确释放BitmapBuffer
锁定的方法。SoftwareBitmap.LockBuffer()
基本代码如下所示(这是来自 Microsoft 的 OpenCV 桥示例,可在此处获取)。
bool OpenCVHelper::GetPointerToPixelData(SoftwareBitmap^ bitmap, unsigned char** pPixelData, unsigned int* capacity)
{
BitmapBuffer^ bmpBuffer = bitmap->LockBuffer(BitmapBufferAccessMode::ReadWrite);
IMemoryBufferReference^ reference = bmpBuffer->CreateReference();
ComPtr<IMemoryBufferByteAccess> pBufferByteAccess;
if ((reinterpret_cast<IInspectable*>(reference)->QueryInterface(IID_PPV_ARGS(&pBufferByteAccess))) != S_OK)
{
return false;
}
if (pBufferByteAccess->GetBuffer(pPixelData, capacity) != S_OK)
{
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
然后该缓冲区 ( pPixelData
) 用于初始化cv:Mat
对象(浅拷贝)。并且永远不会被释放。
连续调用LockBuffer()
同一SoftwareBitmap
对象会引发异常:
Platform::AccessDeniedException ^ 位于内存位置 0x00000002CEEFDCC0。HRESULT:0x80070005 访问被拒绝。WinRT 信息:已获取位图共享锁
如何正确释放这个缓冲区?特别是在 C++/CX 中?
我尝试保留引用,以便在不再需要时释放它。在 C++/CX 中,Dispose() 或 …
使用Windows操作系统上托管的Visual Studio为Windows 10 IoT核心ARM(Raspberry Pi)编译OpenCV 3.*的最简单方法是什么?
我可以在其他contrib模块中使用DNN(深度神经网络)模块吗?
我做了一个简单的性能比较,侧重于使用C#的浮点运算,针对带有Windows 10 IoT的Raspberry Pi 3 Model 2,我将它与Intel Core i7-6500U CPU @ 2.50GHz进行了比较.
Raspberry Pi 3 Model B V1.2 - 测试结果 - 图表
英特尔酷睿i7-6500U CPU @ 2.50GHz - x64测试结果 - 图表
英特尔酷睿i7 仅比Raspberry Pi 3 快十二倍(x64)! - 根据那些测试.
准确度为11.67,并计算每个平台在这些测试中实现的最佳性能.两个平台在并行运行的四个线程中实现了最佳性能(非常简单,独立的计算).
问题:测量和比较这些平台的计算性能的正确方法是什么?目的是比较优化算法,机器学习算法,统计分析等领域的计算性能.因此,我的重点是浮点运算.
有一些基准测试(如MWIPS)和MIPS或FLOPS等测量.但我没有找到一种方法来比较不同的CPU平台的计算能力.
我找到了Roy Longbottom的一个比较(谷歌"Roy Longbottom的Raspberry Pi,Pi 2和Pi 3基准" - 我不能在这里发布更多链接)但根据他的基准测试,Raspberry Pi 3的速度只比英特尔酷睿i7快4倍(x64)建筑,MFLOPS比较).与我的结果非常不同.
以下是我执行的测试的详细信息:
测试是围绕应该迭代执行的简单操作构建的:
private static float SingleAverageCalc(float seed, long nTimes)
{
float x1 = seed, x2 = …
Run Code Online (Sandbox Code Playgroud) c# ×2
arm ×1
c#-9.0 ×1
c++-cx ×1
intel ×1
opencv ×1
raspberry-pi ×1
uwp ×1
windows ×1
windowsiot ×1