C产品在市场上有哪些独特优势?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3807个文字,预计阅读时间需要16分钟。
512x512像素图像,每图采样1000次。
512x512像素,每像素1000采样,C#版本渲染时间为40分47秒
最近有多篇讨论程序语言趋势的博文,其中谈及到C#的性能问题。本人之前未做过相关测试,自己的回覆流于理论猜测,所以花了点时间做个简单实验,比较C#和C++的性能。
实验内容赵姐夫在此回覆认为,C#比C/C++慢,主要在于.Net平台的垃圾回收(garbage collection, GC)机制。若是计算密集型应用,C#和C++产生的原生代码,速度应该相差不大。我对此半信半疑。想到之前看过一个用99行C++代码实现的全局照明(global illumination, GI)渲染程序smallpt ,是纯计算密集的。而且在运算期间,若用C#实现,基本上连GC都可以不用。因此,就把该99行代码移植至C#。
此渲染器的一些特点如下:
- 使用蒙地卡罗路径追踪(Monte Carlo path-tracing)来产生全局照明效果
- 支持三种双向反射分布函数(bidirectional reflectance distribution function, BRDF): 镜射(specular)、漫射(diffuse)和玻璃(即纯折射的介质)
- 从漫射光源产生柔和阴影(soft shadow)
- 使用2x2超采样(super-sampling)去实现反锯齿
- 使用OpenMP作并行运算,充份利用多核性能
当中的术语及技术,之后可能会于图形学博文系列里探讨。本文主要以性能为题。
C++版本以下是C++版本代码,作了些许修改。修改地方加上了MILO注译。
本文共计3807个文字,预计阅读时间需要16分钟。
512x512像素图像,每图采样1000次。
512x512像素,每像素1000采样,C#版本渲染时间为40分47秒
最近有多篇讨论程序语言趋势的博文,其中谈及到C#的性能问题。本人之前未做过相关测试,自己的回覆流于理论猜测,所以花了点时间做个简单实验,比较C#和C++的性能。
实验内容赵姐夫在此回覆认为,C#比C/C++慢,主要在于.Net平台的垃圾回收(garbage collection, GC)机制。若是计算密集型应用,C#和C++产生的原生代码,速度应该相差不大。我对此半信半疑。想到之前看过一个用99行C++代码实现的全局照明(global illumination, GI)渲染程序smallpt ,是纯计算密集的。而且在运算期间,若用C#实现,基本上连GC都可以不用。因此,就把该99行代码移植至C#。
此渲染器的一些特点如下:
- 使用蒙地卡罗路径追踪(Monte Carlo path-tracing)来产生全局照明效果
- 支持三种双向反射分布函数(bidirectional reflectance distribution function, BRDF): 镜射(specular)、漫射(diffuse)和玻璃(即纯折射的介质)
- 从漫射光源产生柔和阴影(soft shadow)
- 使用2x2超采样(super-sampling)去实现反锯齿
- 使用OpenMP作并行运算,充份利用多核性能
当中的术语及技术,之后可能会于图形学博文系列里探讨。本文主要以性能为题。
C++版本以下是C++版本代码,作了些许修改。修改地方加上了MILO注译。

