指针越大,对齐边界越大,数据越稀疏,等效代码也越大。我们就这样将鸡肋的信息融入高速缓存行、代码或是数据,并因此降低了缓冲区命中率。一切,是的,一切都会受到影响。因为处理器缓存并没有增加。系统中其他程序也会受到影响,即使运行的代码没有发生变化。反正我们并不需要额外的内存。除了减速,我们一无所获。

他继续说道,

大多数Visual Stduio并不需要,也无法受益于4G以上的内存。即使有程序包真的需要这么大的内存,也可以用自己的64位进程建立,并且能够无缝集成到VS中无需为其余的部分付费。这在VS 2008中就已经可能了,也许更早。硬把所有的VS拖进64位的世界中,而无视它们的挣扎喊叫,并没有什么太大的意义。

这并不是说无法改善Visual Studio。但Rico Mariani认为,解决方案应当是如何减少VS使用的内存,而非给它更多。

现在,如果我们有某个程序包需要>4G数据,并且还有一个数据访问模型要求以超级常用的接口随时对这些数据进行访问,这种情况下诸如SendMessage这样的函数是无法完成工作的,此时我认为重新考虑存储模型会获得巨大的收益。

VS的空间中有大量的罪犯。我最喜欢投诉语言服务,它在我的整体解决方案中臭名昭著,会加载大量数据,而仅仅提供智能感知中的一小部分功能。但这好像自从2010年后就没有改变过。我常告诫VS组织的人们去考虑解决方案中如果有10k个项目(显示存在的)或50k份文件(也是真实存在的)时,系统应该如何应对。对我来说,将数据全部加载到内存中的方案不太妥当。但如果我们真的、不开玩笑的、有不能节约利用的存储空间,还一定要将数据常驻内存,那么还是将数据从进程中分离开来,放入一个64位的程序包中比较好。

再回到更多寄存器的问题,Rico补充道。

事实也证明了,额外的寄存器对于VS这种交互式应用没什么帮助,比如它不会有大量频繁的计算密集型循环。并且当命中L1时,载荷出栈的性能如此之好,可与寄存器媲美——除了指令编码的长度更糟一些。但其实64位指令编码的长度也好不到哪里去……

所以,没错,见仁见智【你可能不会这么想】,主要是和对计算引擎的显著提升相比,更多的寄存器对于大型应用的作用微乎其微。

这一立场在16位应用程序切换为32位时饱受批评。但在90年代中后期,开发者普遍到处倡导这一转变有益。“既然这样,为什么我们无法从64位的切换中获取同样的收益呢?”,这个问题经常被问到。在后续的一篇标题为64位的Visual Studio——“超级64”位参数的文章中,他解释了区别。

很明显,在有大容量硬盘和可交换内存的前提下,我们编写的任何32位寻址的程序都能够创建为16位的方式(特别是疯狂x86段的问题)。但是这么做能够得到优秀的代码么?能够体验到非凡的工程成本么?我们是在硬件的斗争上耗费大量的时间还是做各有意义的事情?在这种情况下,人们自然想到了非常酷的方式,十分经济地解决了某些问题,因为他们有了内存压力和经济动机这么做。这些是伟大的发明。但在某些方面也是一种疯狂。这种为完成任务而不得不编写的16位代码就只有丑陋而已。

这里,我的假设就不成立了。这些情况下,它不是相同的代码了。16位代码迟钝、丑陋[哔!]以可怕的方式在内存受限的环境中运行,而32位代码则优美简洁,在卓越的算法下,能够直接完成它需要做的工作。因此,相同的代码编码后体积越大运行越慢的现象其实是无关紧要的。它并不是相同的代码!并且众所周知,卓越的算法即便使用更多的内存,也要优于低劣的算法——即使它们更节约内存或代码大小。

这一课适用于我们编写的绝大多数应用程序。如果当某人正在编写计算引擎或者只能历经磨难手动交换内存,切换到64位可能有益。但是大多数情况下,保留32位并减少内存的消耗,将会对应用程序和操作系统所构成的整体产生更大的影响。

本文转自d1net(转载)

Rico Mariani对Visual Studio不是64位的解释相关推荐

  1. 关于Visual Studio 2010与64位系统的问题

    这种问题是在论坛里经常被问到的问题:有没有64位的VS2010?Vs2010能不能编译64位的程序? 我的回答是这样的: 1. VS2010没有专门的64位版.但32位版可以在64位系统上面正常使用. ...

  2. visual studio 配置管理器 32位 64位

    写这篇blog主要解决以下疑问: 文章目录 起因 vs配置管理器的位数选择和电脑系统的位数什么关系? vs配置管理器的位数选择有什么区别? vs配置管理器的位数选择不同需要注意些什么? 参考链接 vs ...

  3. 谷歌不更新android studio,彻底迈向64位:谷歌宣布 Android Studio 将停止 32 位版本更新...

    彻底迈向64位:谷歌宣布 Android Studio 将停止 32 位版本更新 2019-06-12 14:30:27 8点赞 13收藏 11评论 自16年前第一款64位x86处理器横空出世,PC行 ...

  4. 64 位来临:微软 Visual Studio 2022 预览版今夏发布,更多功能一览

    4 月 20 日消息 没错,Visual Studio 2022 它来了. 微软昨日在官方开发博客中宣布,将于今年夏季发布 Visual Studio 2022 的首个预览版,2022 版本将更快.更 ...

  5. Visual Studio 2010 旗舰版安装图解

    微软发布了最新的 Visual Studio 2010 软件开发编程平台及 .Net Framework 4 框架.这次 VisualStudio 2010 包括 Professional 专业版.P ...

  6. Visual Studio 2022发布了,我最爱的5大特性

    VS   2022 今天Visual Studio 2022 终于发布了,你只需要按下⾯地址就可以快速安装你所需要的Visual Studio 2022版本,包括了企业版本,专业版本,以及社区版本. ...

  7. 在命令行上启用 64 位 Visual C++ 工具集

    为什么80%的码农都做不了架构师?>>>    Visual C++ 包含可用于创建 apps 在 32 位上运行,64 位,或基于 ARM 的 windows 操作系统的编译器. ...

  8. 微软正式宣布 Visual Studio 2022!

    首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意见,或者参与了客户研究,感谢你帮助我们继续引导 Visu ...

  9. Visual Studio 2010 下载及安装方法(图文解说)

    Visual Studio 2010 下载及安装方法(图文解说) 2012-02-22 11:16:38|  分类: VC++程序设计 |  标签: |字号大中小 订阅 http://blog.sin ...

最新文章

  1. 京东典型广告推广源码示例一
  2. HashMap HashTable HashSet区别剖析
  3. powerdesign怎么画分析类图_画一个彭于晏
  4. D - Maximum Value Problem FZU - 2037
  5. mysql 异步_MySQL -- 异步I/O
  6. shell脚本的作用
  7. android 拨打多个电话,Android的第一个应用(拨打电话)
  8. 罗永浩最期待的游戏要来了 《Party Animals》10月上线
  9. java中处理异常怎么越过,java – Spring Batch – 异常不可跳过
  10. Linux访问windows共享文件夹
  11. Tomcat8下载及安装配置教程(官网)
  12. 领域驱动设计落地经验
  13. 主语补足语和宾语补足语区别
  14. 【Windows Server 2019】活动目录 (Active Directory) ——创建、删除和管理对象、容器和组织单位(OU)
  15. 全套汽车标志,好不容易找到的哦
  16. js特效 jQuery特效 网页特效网站 web网站模板下载推荐
  17. sklearn机器学习(七)决策树预测泰坦尼克号幸存者
  18. 基于高通SNPE推理引擎的yolov5目标检测算法
  19. 字符流的相关概念和相关方法的使用、IO异常的处理以及Properties属性集
  20. java-net-php-python-jspm人力外包服务公司招聘管理系统计算机毕业设计程序

热门文章

  1. git 自己分支合并到主干或者其他分支
  2. Pipeline 设计模式的优缺点和实践案例
  3. 在路上——我的2011
  4. swagger自动创建接口文档用法
  5. iOS小技能:重签名、逆向分析方法、多开原理
  6. 和大家讨论下公司出差补助问题
  7. js事件循环机制和优先级
  8. 为什么拿相机对着电脑屏幕照相,照片会出现波纹?
  9. git clone authentication failed问题
  10. java计算器监听放大缩小,js监听页面放大缩小