当前位置:首页 >> 摄影技巧 >> 佳能r6索尼a7s3,谁更值得入手?

佳能r6索尼a7s3,谁更值得入手?

r6拍视频只有全自动和全手动,a7m4可以支持光圈优先,快门优先的视频模式;索尼a7s3和佳能r5都是顶级摄影器材,但它们的设计理念和用途略有不同,因此也有不同的适用场景。从参数上可以看出,索尼a7s3是一款纯粹的视频机,和佳能r5拍照、视频混合机的定位完全不同。

阅读数:28

那就索尼a7s3?索尼a7s3和佳能r6都是非常优秀的相机,都有各自的优点和适用场景。如果你专注于视频拍摄,那么索尼a7s3是一个更好的选择;如果你需要更高的像素数和更好的自动对焦系统,那么佳能r6可能更适合你。最终选择取决于你的具体需求和评估。

佳能r6的自动对焦系统在视频和静态拍摄方面都表现出色,采用了DualPixelCMOSAFII技术,具备高速、精准的对焦能力。而索尼a7s3的自动对焦系统也很不错,采用了759个相位检测像素,能够在光线不足的情况下提供高速对焦。

佳能r6索尼a8

索尼新发布了索尼a7m4全画幅微单相机,定价是16999元和佳能R6的售价15999元价格相差不大。那么就有朋友们很纠结索尼a7m4和佳能r6怎么选?那么我们一起看一下索尼a7m4和佳能r6的区别对比。

除了拍摄照片,索尼7m3和佳能r6在视频功能方面也具有很高的水平。索尼7m3支持4K视频拍摄,具有高质量的视频输出和流畅的运动跟踪能力。而佳能r6则支持8K视频拍摄,可以拍摄出更加细腻逼真的影像,同时还具备了强大的动态范围和低噪声性能,能够满足专业摄像师对于影像质量的追求。在视频功能方面,索尼7m3和佳能r6都能够满足用户对于高品质影像的需求,用户可以根据个人喜好选择适合自己的相机。

《NIKON尼康D810使用说明「新手入门必看使用说明」》?pd=video_page&nid=79501437960909836&sign=&word=%E5%B0%BC%E5%BA%B7d810%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B&oword=%E5%B0%BC%E5%BA%B7d810%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B&title=NIKON%E5%B0%BC%E5%BA%B7D810%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E%E3%80%8C%E6%96%B0%E6%89%8B%E5%85%A5%E9%97%A8%E5%BF%85%E7%9C%8B%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E%E3%80%8D&atn=index&alr=1&openapi=1&resource_id=5052&frsrcid=1508&cambrian_id=&baijiahao_id=1640737555629719&sp=0&ext=%7B%22src%22%3A%22https%3A%5C%2F%5C%2Fvd

3.bdstatic.com%5C%2Fmda-kic13xhrv15ew8u5%5C%2Fmda-kic13xhrv15ew8u

5.mp4%3Fplaylist%3D%255B%2522hd%2522%255D%26pd%3D20%22%2C%22loc%22%3A%22http%3A%5C%2F%5C%2Fhaokan.baidu.com%5C%2Fv%3Fpd%3Dwisenatural%26vid%3D79501437960909836%22%2C%22log_loc%22%3A%22http%3A%5C%2F%5C%2Fbaijiahao.baidu.com%5C%2Fs%3Fid%3D1677647342135514637%26wfr%3Dcontent%22%2C%22duration%22%3A1563%2C%22poster%22%3A%22http%253A%252F%252Fvdposter.bdstatic.com%252F3d54a397ba3b54dc1cb34b46d4e73f

10.jpeg%22%2C%22source%22%3A%22%5Cu597d%5Cu770b%5Cu89c6%5Cu9891%22%2C%22s%22%3A%22bffb477c1406152e04290490c6f78cfd%22%2C%22isHttps%22%3A1%2C%22jsy%22%3A1%7D&top=%7B%22sfhs%22%3A1%2C%22_hold%22%3A2%7D

索尼a7s3与佳能r5

关于价格,索尼曾经表示“鉴于佳能r5定在7月初发布,为的是根据竞争对手的售价调整a7s3的首发价”。

从参数上可以看出,索尼a7s3是一款纯粹的视频机,和佳能r5拍照、视频混合机的定位完全不同。

索尼a7s3和佳能r5都是顶级摄影器材,但它们的设计理念和用途略有不同,因此也有不同的适用场景。

一直在看索尼本部的官网,等待着索尼a7s3的发布,谁知国内的索尼发布比本部提前了一天。现在关于a7s3的消息已经铺天盖地。一切数据都已经明朗,包括售价。那么我们用对比的方法,来看看这款索尼a7s3的机型,与佳能R5机型到底哪一款更适合你的使用?

总的来说,索尼a7s3和佳能r5之间没有绝对的好与坏之分,它们各自都具有一定的优势和适用场景。需要根据自己的实际需求和拍摄方向来选择,才能更好地发挥它们的优势。

对上面的表格进行逐条说明

1、像素,索尼a7s3的像素为1200万,佳能R5的像素为4500万。作为视频和拍照兼用,那么无疑R5的实用性更强。R5是一台拍照和视频兼用型相机。而索尼a7s3更像是一台视频摄影机。

2、最低ISO,两台的最低ISO都很好,只是索尼a7s3的ISO更低,更好。低ISO很多人不重视,其实这个指标是代表对最明亮部分的分辨能力,就像最高ISO一样,是对暗部的表现能力一样。

3、最高ISO,索尼a7s3低像素发挥了巨大的作用,在最高ISO达到了409600很高的一个指标。这对低光照的场景拍摄无疑非常有利。

4、对焦点数索尼a7s3是759个,佳能是5940个,对焦点多,可以更精确地跟踪对焦。过去拍电影,是用人工手动跟踪对焦,而现在随着人眼自动追踪,加上巨量的对焦点数量,对焦点越多在这些对焦移动的对焦精度就越高。特别是在超高分辨率的情况下,稍微失焦,就会在巨型屏幕上看出问题来。这点来说佳能更优秀,索尼基本够用。

5、对焦点覆盖面,索尼a7s3为93%,佳能R5为100%。这点上佳能是极为优秀。在拍视频的时候,自动对焦点跟踪绝大部分在中心画面附近,如果极端的靠近边缘这种情况非常少见。鉴于此索尼可以说完全够用了。

6、视频自动对焦,这两款机型都有这项功能,这项功能对于小团队,单兵作战的视频拍摄极为有用。

7、暗光对焦,主要是指在最暗的环境下相机是否还有自动对焦功能,这种情况下一般发生在晚上或者暗处以及最大孔径较小的镜头拍摄时候,这两款机器的最暗对焦的EV值都在-6。

8、连拍raw照片张数,索尼a7s3的连拍张数是10张每秒,而佳能是20张每秒。这个代表了相机的处理速度和读写速度。在这里,佳能的指标非常优秀。代表着佳能的处理速度甚至超越了自己的旗舰型体育机1DX3的性能。达到了一个极佳的水准。这点上索尼a7s3虽然也不慢,但是相差的距离还是十分巨大的。

15、动态范围

索尼a7s3宣布自己的是15档,这点是非常牛的,专业电影机阿莱的早期机型也没有达到如此大的动态范围。代表着这个机器拍摄的画面可以适应非常大的光比条件。佳能R5没有查到相关数据,估计应该在13档以上,在这里就不做评价了。毫无疑问佳能R5从最高ISO和最低ISO上就可以得出结论,它的动态范围一定比索尼的小。

16、16bitraw外录

这个是索尼的一个逆天的指标,这个指标以前只有在阿莱机器上见过,连RED好像也只有14bit的指标。绝大部分135全画幅相机的照片raw才只是14bit。而这个a7s3竟然做到了16bit,配上录机可以超过很多电影机的水准。

17、8kraw内录

这个只有佳能有这个功能,代表不需要外部的录机就可以单独工作。代表着相机的十分强悍的处理器和读写能力最高达到了2600m的码流。而索尼最高码流是600m

17、8kraw内录

这个只有佳能有这个功能,代表不需要外部的录机就可以单独工作。代表着相机的十分强悍的处理器和读写能力最高达到了2600m的码流。而索尼最高码流是600m

18、4kraw内录

这两款机器好像都没有。

19、最高码流

佳能R5达到了2600M而索尼a7s3只能做到600M。高码流代表着最高的画质。视频与照片有个最大的区别。就是码流。实际上对应的是照片的文件大小,大文件代表着细节更丰富。高码流也代表着视频的细节更丰富。

佳能r6与索尼a73怎么选择

a73和r6就看预算了,我是更推荐r6新机器,视频性能强,照片也可以,搭配24105基本就2w多

索尼A73之所以广受欢迎,是因为索尼A73强大的均衡性能:索尼A73具有五轴防抖,索尼A73具有非常强悍的续航能力,索尼A73画质非常优秀,高感和动态范围都非常好,视频拍摄也很不错,加上索尼A73相当强悍的对焦性能以及连拍能力,让这款机型一上市就成为一款当时性能最强大的综合性高端主力机型。

索尼A7M3是一台干活的好机器,对焦靠谱,镜头群选择多,而且视频摄影切换相当快速,佳能R6切换视频模式相对来说就没索尼那么高效率,还要进入系统设置才行,索尼系统是属于要好好研究才能用好的系统,毕竟索尼A73的菜单复杂程度,体验过都知道,功能强归强,会不会用就是使用者的事情。索尼A73的缺点其实也就几个,老生常谈的话题,第一就是屏幕垃圾,但不是说不能看,只是对比佳能屏幕,索尼屏幕就拉垮了,第二直出颜色一般,毕竟用索尼不会后期怎么行,第三就是菜单系统,实在不好用,一个功能要里里外外找个遍。但无论怎么说,索尼A73作为干活来说,就是一台好机器,市场那么多的A73也证明了这一点。

为什么说索尼A73为何已不值得入手?为何目前已不值得入手?其实不是说索尼A73有什么问题,而是基于三个原因:

第一,毕竟索尼A73已经是差不多4年前的一款老产品了,在四年前尼康和佳能在微单领域基本上没有什么作为,两家公司还拼命在单反领域进行竞争,所以佳能和尼康没有任何一款微单产品可以和索尼的微单匹敌,可以说四年前索尼在微单领域一枝独秀。而当时的微单多数都续航能力不行,对焦速度也比较差,而索尼A73彻底改变了这一局面,不仅续航方面和对焦方面具有了突破性的进展,而且还首先具备了4K视频拍摄性能,可以说是一种历史性的突破。

不过从现在看,这款产品技术方面已经有些落伍了,特别是最近这两年,佳能和尼康全面转向微单领域的研发,佳能推出了R6、R5和R3这样的超强微单,而且R1也在紧锣密鼓地研发当中,而尼康推出了Z62、Z72甚至Z9这样的超强旗舰机型,可以说尼康、佳能与索尼在微单方面的实力已经旗鼓相当,索尼的优势越来越小了。

佳能r6怎么装箱

现代程序员写代码没有人敢说自己没用过泛型,这个泛型模板T可以被任何你想要的类型替代,确实很魔法很神奇,很多人也习以为常了,但就是这么有趣的泛型T底层到底是怎么帮你实现的,不知道有多少人清楚底层玩法,这篇我就试着来分享一下,不一定全对哈。。。

一:没有泛型前

现在的netcore3.1和最新的.netframework8早已经没有当初那个被人诟病的ArrayList了,但很巧这玩意不得不说,因为它决定了C#团队痛改前非,抛弃过往重新上路,上一段ArrayList案例代码。

publicclassArrayList{privateobject[]items;privateintindex=0;publicArrayList(){items=newobject[10];}publicvoidAdd(objectitem){items[index++]=item;}}

上面这段代码,为了保证在Add中可以塞入各种类型eg:int,double,class,就想到了一个绝招用祖宗类object接收,这就引入了两大问题,装箱拆箱和类型安全。

1.装箱拆箱

这个很好理解,因为你使用了祖宗类,所以当你Add的时候塞入的是值类型的话,自然就有装箱操作,比如下面代码:

ArrayListarrayList=newArrayList();arrayList.Add(3);

<1>占用更大的空间

这个问题我准备用windbg看一下,相信大家知道一个int类型占用4个字节,那装箱到堆上是几个字节呢,好奇吧。

原始代码和IL代码如下:

publicstaticvoidMain(string[]args){varnum=10;varobj=(object)num;Console.Read();}IL_0000:nopIL_0001:ldc.i4.s10IL_0003:stloc.0IL_0004:ldloc.0IL_0005:box[mscorlib]System.Int32IL_000a:stloc.1IL_000b:callint32[mscorlib]System.Console::Read()IL_0010:popIL_0011:ret

可以清楚的看到IL_0005中有一个box指令,装箱没有问题,然后抓一下dump文件。

0s->!clrstack-l->!do0x0000018300002d48

0:000>0sntdll!ZwReadFile+0x14:00007ff9`fc7baa64c3ret0:000>!clrstack-lOSThreadId:0xfc(0)ChildSPIPCallSite0000002c397fedf000007ff985c808f3ConsoleApp2.Program.Main(System.String[])[C:\dream\Csharp\ConsoleApp1\ConsoleApp2\Program.cs@28]LOCALS:0x0000002c397fee2c=0x000000000000000a0x0000002c397fee20=0x0000018300002d480000002c397ff03800007ff9e51b6c93[GCFrame:0000002c397ff038]0:000>!do0x0000018300002d48Name:System.Int32MethodTable:00007ff9e33285a0EEClass:00007ff9e34958a8Size:24(0x18)bytesFile:C:\WINDOWS\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dllFields:MTFieldOffsetTypeVTAttrValueName00007ff9e33285a040005a08System.Int321instance10m_value

倒数第5行Size:24(0x18)bytes,可以清楚的看到是24字节。为什么是24个字节,8(同步块指针)+8(方法表指针)+4(对象大小)=20,但因为是x64位,内存是按8对齐,也就是要按8的倍数计算,所以占用是8+8+8=24字节,原来只有4字节的大小因为装箱已被爆到24字节,如果是10000个值类型的装箱那空间占用是不是挺可怕的?

<2>栈到堆的装箱搬运到运输到售后到无害化处理都需要付出重大的人力和机器成本

2.类型不安全

很简单,因为是祖宗类型object,所以无法避免程序员使用乱七八糟的类型,当然这可能是无意的,但是编译器确无法规避,代码如下:

ArrayListarrayList=newArrayList();arrayList.Add(3);arrayList.Add(newAction<int>((num)=>{}));arrayList.Add(newobject());

面对这两大尴尬的问题,C#团队决定重新设计一个类型,实现一定终身,这就有了泛型。

二:泛型的出现

1.救世主

首先可以明确的说,泛型就是为了解决这两个问题而生的,你可以在底层提供的List<T>中使用List<int>,List<double>。。。等等你看得上的类型,而这种技术的底层实现原理才是本篇关注的重点。

publicstaticvoidMain(string[]args){List<double>list1=newList<double>();List<string>list3=newList<string>();...}

三:泛型原理探究

这个问题的探索其实就是List<T>->List<int>在何处实现了T->int的替换,反观java,它的泛型实现其实在底层还是用object来替换的,C#肯定不是这么做的,要知道在哪个阶段被替换了,你起码要知道C#代码编译的几个阶段,为了理解方便,我画一张图吧。

流程大家也看到了,要么在MSIL中被替换,要么在JIT编译中被替换。。。

publicstaticvoidMain(string[]args){List<double>list1=newList<double>();List<int>list2=newList<int>();List<string>list3=newList<string>();List<int[]>list4=newList<int[]>();Console.ReadLine();}

1.在第一阶段探究

因为第一阶段是MSIL代码,所以用ILSpy看一下中间代码即可。

IL_0000:nopIL_0001:newobjinstancevoidclass[mscorlib]System.Collections.Generic.List`1<float64>::.ctor()IL_0006:stloc.0IL_0007:newobjinstancevoidclass[mscorlib]System.Collections.Generic.List`1<int32>::.ctor()IL_000c:stloc.1IL_000d:newobjinstancevoidclass[mscorlib]System.Collections.Generic.List`1<string>::.ctor()IL_0012:stloc.2IL_0013:newobjinstancevoidclass[mscorlib]System.Collections.Generic.List`1<int32[]>::.ctor()IL_0018:stloc.3IL_0019:callstring[mscorlib]System.Console::ReadLine()IL_001e:popIL_001f:ret.classpublicautoansiserializablebeforefieldinitSystem.Collections.Generic.List`1<T>extendsSystem.ObjectimplementsclassSystem.Collections.Generic.IList`1<!T>,classSystem.Collections.Generic.ICollection`1<!T>,classSystem.Collections.Generic.IEnumerable`1<!T>,System.Collections.IEnumerable,System.Collections.IList,System.Collections.ICollection,classSystem.Collections.Generic.IReadOnlyList`1<!T>,classSystem.Collections.Generic.IReadOnlyCollection`1<!T>

从上面的IL代码中可以看到,最终的类定义还是System.Collections.Generic.List1\<T>,说明在中间代码阶段还是没有实现T->int的替换。

2.在第二阶段探究

想看到JIT编译后的代码,这个说难也不难,其实每个对象头上都有一个方法表指针,而这个指针指向的就是方法表,方法表中有该类型的所有最终生成方法,如果不好理解,我就画个图。

!dumpheap-stat寻找托管堆上的四个List对象。

0:000>!dumpheap-statStatistics:MTCountTotalSizeClassName00007ff9e3314320132Microsoft.Win32.SafeHandles.SafeViewOfFileHandle00007ff9e339b4b8140System.Collections.Generic.List`1[[System.Double,mscorlib]]00007ff9e333a068140System.Collections.Generic.List`1[[System.Int32,mscorlib]]00007ff9e3330d58140System.Collections.Generic.List`1[[System.String,mscorlib]]00007ff9e3314a58140System.IO.Stream+NullStream00007ff9e3314510140Microsoft.Win32.Win32Native+InputRecord00007ff9e3314218140System.Text.InternalEncoderBestFitFallback00007ff985b442c0140System.Collections.Generic.List`1[[System.Int32[],mscorlib]]00007ff9e338fd28148System.Text.DBCSCodePageEncoding+DBCSDecoder00007ff9e3325ef0148System.SharedStatics

可以看到从托管堆中找到了4个list对象,现在我就挑一个最简单的System.Collections.Generic.List1[[System.Int32,mscorlib]],前面的00007ff9e333a068就是方法表地址。

!dumpmt-md00007ff9e333a068

0:000>!dumpmt-md00007ff9e333a068EEClass:00007ff9e349b008Module:00007ff9e3301000Name:System.Collections.Generic.List`1[[System.Int32,mscorlib]]mdToken:00000000020004afFile:C:\WINDOWS\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dllBaseSize:0x28ComponentSize:0x0SlotsinVTable:77NumberofIFacesinIFaceMap:8--------------------------------------MethodDescTableEntryMethodDescJITName00007ff9e388245000007ff9e3308de8PreJITSystem.Object.ToString()00007ff9e389cc6000007ff9e34cb9b0PreJITSystem.Object.Equals(System.Object)00007ff9e388209000007ff9e34cb9d8PreJITSystem.Object.GetHashCode()00007ff9e387f42000007ff9e34cb9e0PreJITSystem.Object.Finalize()00007ff9e38a365000007ff9e34dc6e8PreJITSystem.Collections.Generic.List`1[[System.Int32,mscorlib]].Add(Int32)00007ff9e4202dc000007ff9e34dc7f8PreJITSystem.Collections.Generic.List`1[[System.Int32,mscorlib]].Insert(Int32,Int32)

上面方法表中的方法过多,我做了一下删减,可以清楚的看到,此时Add方法已经接受(Int32)类型的数据了,说明在JIT编译之后,终于实现了T->int的替换,然后再把List<double>打出来看一下。

0:000>!dumpmt-md00007ff9e339b4b8MethodDescTableEntryMethodDescJITName00007ff9e388245000007ff9e3308de8PreJITSystem.Object.ToString()00007ff9e389cc6000007ff9e34cb9b0PreJITSystem.Object.Equals(System.Object)00007ff9e388209000007ff9e34cb9d8PreJITSystem.Object.GetHashCode()00007ff9e387f42000007ff9e34cb9e0PreJITSystem.Object.Finalize()00007ff9e442873000007ff9e34e4170PreJITSystem.Collections.Generic.List`1[[System.Double,mscorlib]].Add(Double)00007ff9e3867a0000007ff9e34e4280PreJITSystem.Collections.Generic.List`1[[System.Double,mscorlib]].Insert(Int32,Double)

上面看的都是值类型,接下来再看一下如果T是引用类型会是怎么样呢?

0:000>!dumpmt-md00007ff9e3330d58MethodDescTableEntryMethodDescJITName00007ff9e389006000007ff9e34eb058PreJITSystem.Collections.Generic.List`1[[System.__Canon,mscorlib]].Add(System.__Canon)0:000>!dumpmt-md00007ff985b442c0MethodDescTableEntryMethodDescJITName00007ff9e389006000007ff9e34eb058PreJITSystem.Collections.Generic.List`1[[System.__Canon,mscorlib]].Add(System.__Canon)

可以看到当是List<int[]>和List<string>的时候,JIT使用了System.__Canon这么一个类型作为替代,有可能人家是摄影爱好者吧,为什么用__Canon替代引用类型,这是因为它想让能共享代码区域的方法都共享来节省空间和内存吧,不信的话可以看看它们的Entry列都是同一个内存地址:00007ff9e3890060,打印出来就是这么一段汇编。

0:000>!u00007ff9e3890060preJITgeneratedcodeSystem.Collections.Generic.List`1[[System.__Canon,mscorlib]].Add(System.__Canon)Begin00007ff9e3890060,size4a>>>00007ff9`e389006057pushrdi00007ff9`e389006156pushrsi00007ff9`e38900624883ec28subrsp,28h00007ff9`e3890066488bf1movrsi,rcx00007ff9`e3890069488bfamovrdi,rdx00007ff9`e389006c8b4e18movecx,dwordptr[rsi+18h]00007ff9`e389006f488b5608movrdx,qwordptr[rsi+8]00007ff9`e38900733b4a08cmpecx,dwordptr[rdx+8]00007ff9`e38900767422jemscorlib_ni+0x59009a(00007ff9`e389009a)00007ff9`e3890078488b4e08movrcx,qwordptr[rsi+8]00007ff9`e389007c8b5618movedx,dwordptr[rsi+18h]00007ff9`e389007f448d4201lear8d,[rdx+1]00007ff9`e389008344894618movdwordptr[rsi+18h],r8d00007ff9`e38900874c8bc7movr8,rdi00007ff9`e389008aff152088faffcallqwordptr[mscorlib_ni+0x5388b0(00007ff9`e38388b0)](JitHelp:CORINFO_HELP_ARRADDR_ST)00007ff9`e3890090ff461cincdwordptr[rsi+1Ch]00007ff9`e38900934883c428addrsp,28h00007ff9`e38900975epoprsi00007ff9`e38900985fpoprdi00007ff9`e3890099c3ret00007ff9`e389009a8b5618movedx,dwordptr[rsi+18h]00007ff9`e389009dffc2incedx00007ff9`e389009f488bcemovrcx,rsi00007ff9`e38900a290nop00007ff9`e38900a3e8c877feffcallmscorlib_ni+0x577870(00007ff9`e3877870)(System.Collections.Generic.List`1[[System.__Canon,mscorlib]].EnsureCapacity(Int32),mdToken:00000000060039e5)00007ff9`e38900a8ebcejmpmscorlib_ni+0x590078(00007ff9`e3890078)

然后再回过头看List<int>和List<double>,从Entry列中看确实不是一个地址,说明List<int>和List<double>是两个完全不一样的Add方法,看得懂汇编的可以自己看一下哈。。。

MethodDescTableEntryMethodDescJITName00007ff9e38a365000007ff9e34dc6e8PreJITSystem.Collections.Generic.List`1[[System.Int32,mscorlib]].Add(Int32)00007ff9e442873000007ff9e34e4170PreJITSystem.Collections.Generic.List`1[[System.Double,mscorlib]].Add(Double)0:000>!u00007ff9e38a3650preJITgeneratedcodeSystem.Collections.Generic.List`1[[System.Int32,mscorlib]].Add(Int32)Begin00007ff9e38a3650,size50>>>00007ff9`e38a365057pushrdi00007ff9`e38a365156pushrsi00007ff9`e38a36524883ec28subrsp,28h00007ff9`e38a3656488bf1movrsi,rcx00007ff9`e38a36598bfamovedi,edx00007ff9`e38a365b8b5618movedx,dwordptr[rsi+18h]00007ff9`e38a365e488b4e08movrcx,qwordptr[rsi+8]00007ff9`e38a36623b5108cmpedx,dwordptr[rcx+8]00007ff9`e38a36657423jemscorlib_ni+0x5a368a(00007ff9`e38a368a)00007ff9`e38a3667488b5608movrdx,qwordptr[rsi+8]00007ff9`e38a366b8b4e18movecx,dwordptr[rsi+18h]00007ff9`e38a366e8d4101leaeax,[rcx+1]00007ff9`e38a3671894618movdwordptr[rsi+18h],eax00007ff9`e38a36743b4a08cmpecx,dwordptr[rdx+8]00007ff9`e38a36777321jaemscorlib_ni+0x5a369a(00007ff9`e38a369a)00007ff9`e38a36794863c9movsxdrcx,ecx00007ff9`e38a367c897c8a10movdwordptr[rdx+rcx*4+10h],edi00007ff9`e38a3680ff461cincdwordptr[rsi+1Ch]00007ff9`e38a36834883c428addrsp,28h00007ff9`e38a36875epoprsi00007ff9`e38a36885fpoprdi00007ff9`e38a3689c3ret00007ff9`e38a368a8b5618movedx,dwordptr[rsi+18h]00007ff9`e38a368dffc2incedx00007ff9`e38a368f488bcemovrcx,rsi00007ff9`e38a369290nop00007ff9`e38a3693e8a8e60700callmscorlib_ni+0x621d40(00007ff9`e3921d40)(System.Collections.Generic.List`1[[System.Int32,mscorlib]].EnsureCapacity(Int32),mdToken:00000000060039e5)00007ff9`e38a3698ebcdjmpmscorlib_ni+0x5a3667(00007ff9`e38a3667)00007ff9`e38a369ae8bf60f9ffcallmscorlib_ni+0x53975e(00007ff9`e383975e)(mscorlib_ni)00007ff9`e38a369fccint30:000>!u00007ff9e4428730preJITgeneratedcodeSystem.Collections.Generic.List`1[[System.Double,mscorlib]].Add(Double)Begin00007ff9e4428730,size5a>>>00007ff9`e442873056pushrsi00007ff9`e44287314883ec20subrsp,20h00007ff9`e4428735488bf1movrsi,rcx00007ff9`e44287388b5618movedx,dwordptr[rsi+18h]00007ff9`e442873b488b4e08movrcx,qwordptr[rsi+8]00007ff9`e442873f3b5108cmpedx,dwordptr[rcx+8]00007ff9`e44287427424jemscorlib_ni+0x1128768(00007ff9`e4428768)00007ff9`e4428744488b5608movrdx,qwordptr[rsi+8]00007ff9`e44287488b4e18movecx,dwordptr[rsi+18h]00007ff9`e442874b8d4101leaeax,[rcx+1]00007ff9`e442874e894618movdwordptr[rsi+18h],eax00007ff9`e44287513b4a08cmpecx,dwordptr[rdx+8]00007ff9`e4428754732ejaemscorlib_ni+0x1128784(00007ff9`e4428784)00007ff9`e44287564863c9movsxdrcx,ecx00007ff9`e4428759f20f114cca10movsdmmwordptr[rdx+rcx*8+10h],xmm100007ff9`e442875fff461cincdwordptr[rsi+1Ch]00007ff9`e44287624883c420addrsp,20h00007ff9`e44287665epoprsi00007ff9`e4428767c3ret00007ff9`e4428768f20f114c2438movsdmmwordptr[rsp+38h],xmm100007ff9`e442876e8b5618movedx,dwordptr[rsi+18h]00007ff9`e4428771ffc2incedx00007ff9`e4428773488bcemovrcx,rsi00007ff9`e442877690nop00007ff9`e4428777e854fbffffcallmscorlib_ni+0x11282d0(00007ff9`e44282d0)(System.Collections.Generic.List`1[[System.Double,mscorlib]].EnsureCapacity(Int32),mdToken:00000000060039e5)00007ff9`e442877cf20f104c2438movsdxmm1,mmwordptr[rsp+38h]00007ff9`e4428782ebc0jmpmscorlib_ni+0x1128744(00007ff9`e4428744)00007ff9`e4428784e8d50f41ffcallmscorlib_ni+0x53975e(00007ff9`e383975e)(mscorlib_ni)00007ff9`e4428789ccint3

可能你有点蒙,我画一张图吧。

四:总结

泛型T真正的被代替是在JIT编译时才实现的,四个List<T>会生成四个具有相应具体类型的类对象,所以就不存在拆箱和装箱的问题,而类型的限定visualstudio编译器工具提前就帮我们约束好啦。

买佳能r6 还是等索尼a7m4

所以我觉得r6和a7m4的连拍之争,在乎你要画质还是要速度了;

防抖方面,r6更稳。不过拍照来说,a7m4也够用。

操控方面,a7m4是四转盘,r6是三转盘,a7m4的自定义按钮更多,其他操控硬件的区别不大;

r6拍视频只有全自动和全手动,a7m4可以支持光圈优先,快门优先的视频模式;

作为一名经验丰富的职业摄影师,选择一台适合自己需求的相机是非常重要的。在如今市场上众多品牌和型号的相机中,佳能R6和索尼A7M4都是备受关注的热门选择。列举4个知识点,帮助您更好地判断选佳能R6还是等索尼A7M4。

选佳能R6还是等索尼A7M4主要取决于个人的需求和偏好。如果您注重高感光度表现和噪点控制,佳能R6是一个不错的选择;如果您更注重细节和画质细腻度,索尼A7M4则更适合您。无论您选择哪一款相机,都需注意合适的配备镜头以发挥其最大潜力。您会更好地决定选购适合自己的相机。

"/>

如果是影视专业,拍摄跟后期为主,推荐机器主要有三台:

1、佳能R6:推荐理由其实很简单,4K60P10bit422,八档五轴防抖,双核对焦,这几样加持之下,让佳能R6成为实力相当强悍的相机,无论是拍照还是视频,至于视频过热的问题,如果需要长时间录制,可以考虑松下。一般来说,佳能R6足够好用,如果想一步到位,上佳能R5。

2、索尼A7m4,一样的4K60p10bit422,只不过是裁切实现的,靠谱的对焦系统,庞大的镜头群,反正只要你能原价买到索尼a7m4就是好东西,溢价不推荐购买,如果你想一步到位,那就索尼a7s3。

3、松下S5,最具性价比的选择,一万能买到最好的视频机,一样的4k60p10bit22,可以外录raw,视频后期天花板很高,当然不足也有就是,对焦没佳能索尼靠谱,就是这样简单,如果你想一步到位,那就买松下s1h,推荐买二手,性价比无敌。

返回顶部