V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
feifei003
V2EX  ›  分享发现

为什么 visual studio 没有迁移到 64 位

  •  
  •   feifei003 · 2020-04-02 09:03:03 +08:00 · 5522 次点击
    这是一个创建于 1704 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看到这篇文章

    https://docs.microsoft.com/en-us/archive/blogs/ricom/revisiting-64-bit-ness-in-visual-studio-and-elsewhere

    是不是照这个意思其实跑 32 位程序比跑 64 位程序更好

    46 条回复    2020-04-03 16:46:04 +08:00
    alphatoad
        1
    alphatoad  
       2020-04-02 09:19:48 +08:00
    对于 vs 确实意义不大,但是长期下来估计历史包袱会很重
    什么时候 m$才能想 Catalina 那样砍掉所有的 32 位程序呢
    ybw
        2
    ybw  
       2020-04-02 09:20:23 +08:00 via Android   ❤️ 1
    都是借口,真实原因就一个字,懒
    nannanziyu
        3
    nannanziyu  
       2020-04-02 09:49:50 +08:00   ❤️ 47
    果粉的脑子烧坏了吧,还砍掉 32 位
    这是操作系统,不是玩具
    向下兼容是基本的
    几年前写个工具软件,过两年就不能用了,还鼓掌拍手的,我也就见过果粉
    lishunan246
        4
    lishunan246  
       2020-04-02 09:59:46 +08:00 via Android
    当然是为了兼容最新的 Surface Pro X 。
    onecode
        5
    onecode  
       2020-04-02 10:04:04 +08:00
    笑死,还懒,要是懒得话也不用两年更新一个版本了
    又不是 Xcode,上 64 位照样天天崩
    gui32 位有什么影响,编译器和调试器都是 32/64 位共存的,好好优化性能他不香嘛,你们有几个用 vs 开发的项目占用内存 4g 以上的
    Mithril
        6
    Mithril  
       2020-04-02 10:11:55 +08:00   ❤️ 3
    @onecode 主要是 32 位可用内存差不多只有 2G 多,但是 Visual Studio 的插件全部都是 host 在自己进程中的。这就导致了某些复杂项目里,用来做分析的插件会占用一大堆内存最终导致 IDE 进程崩溃。
    特别是 C++项目里,如果解决方案有很多项目,而且大量使用了模板。很多第三方插件都会崩溃,比如 Resharper C++或者 Visual Assist X 。这些插件会尝试加载所有头文件有的甚至会分析模板。你会眼瞅着内存暴涨最后 devenv 炸掉。
    目前只能卸载某些项目,或者暂时禁用插件的分析功能。
    onecode
        7
    onecode  
       2020-04-02 10:14:35 +08:00
    @Mithril 你开发电脑内存多少
    Mithril
        8
    Mithril  
       2020-04-02 10:35:30 +08:00
    @onecode 64G
    reus
        9
    reus  
       2020-04-02 10:35:40 +08:00   ❤️ 1
    @onecode 都说了是插件用的内存多于 32 位进程内存上限了,还问什么总内存?这不就是影响吗?
    ipwx
        10
    ipwx  
       2020-04-02 10:41:10 +08:00
    @onecode 32 位程序只能用 4g 虚拟地址。其中 2g 是内核寻址,用户态能用的只有另外 2g 。
    ipwx
        11
    ipwx  
       2020-04-02 10:42:27 +08:00
    用上虚拟内存映射可能也许能够缓解用户态地址空间紧张吧。不过正常人写程序谁用 mmap 搞一堆那么复杂的,不如直接上 64 位。
    onecode
        12
    onecode  
       2020-04-02 10:53:33 +08:00
    @reus 你去看看 Resharper 是不是占内存大户再来喷,一个插件的锅让 vs 来背?
    onecode
        13
    onecode  
       2020-04-02 10:56:44 +08:00
    @ipwx 谁告诉你 vs 在 64 位操作系统中只能用到 2g 内存的
    reus
        14
    reus  
       2020-04-02 11:02:25 +08:00   ❤️ 2
    @onecode 好啊,我就搜索了“Resharper memory consumption”,找到如下讨论:

    https://resharper-support.jetbrains.com/hc/en-us/community/posts/360002647079-Analyze-high-memory-consumption-of-Resharper

    https://resharper-support.jetbrains.com/hc/en-us/community/posts/360000474170-Out-of-memory-issues

    要解决这个问题,要么就是 vs 用 64 位,插件就能用上更多内存,要么就让插件跑在独立的进程里。

    分析插件用内存多有什么奇怪的?

    反正死守 32 位就是傻逼。
    onecode
        15
    onecode  
       2020-04-02 11:03:59 +08:00
    @reus 开始攻击了?那你不要 @我了
    onecode
        16
    onecode  
       2020-04-02 11:08:17 +08:00
    @reus 几句话就嘴里喷屎的玩意
    reus
        17
    reus  
       2020-04-02 11:13:47 +08:00   ❤️ 2
    @onecode 我说微软死守 32 位是傻逼,可没说你,倒是你攻击我了。

    当然,现在看来你也是傻逼。
    martinsu
        18
    martinsu  
       2020-04-02 11:50:05 +08:00
    既然 32 位比 64 位还有优势,为什么不再往回退去用 16 位,8 位?
    minamike
        19
    minamike  
       2020-04-02 11:58:49 +08:00 via iPhone
    挨炮只有 64 位砍掉 32 位是傻逼
    巨硬死守 32 位不升 64 位就不傻逼吗
    傻逼何苦嘲笑傻逼
    nannanziyu
        20
    nannanziyu  
       2020-04-02 12:51:10 +08:00 via Android   ❤️ 1
    楼上果粉脑子烧坏证据+1
    分不清应用程序和操作系统吗?
    还死守 32 位,你没听说过 64 位的 windows 吗
    shutongxinq
        21
    shutongxinq  
       2020-04-02 12:52:24 +08:00 via iPhone
    32 位程序用户态在 64 位 win 下能用满 4G 内存。当然 4G 和 2G 没啥本质区别,都小得可怜。坚持 32 位不如坚持 640kb 。640kb 经典👍

    来源: https://blog.csdn.net/WPwalter/article/details/77986970
    alphatoad
        22
    alphatoad  
       2020-04-02 13:26:08 +08:00   ❤️ 1
    我好像被骂了?笑
    软件工程不及时迭代最后结果就是屎山,很难理解吗?你咋不回去用 16 位软件?
    现在 x86_64 还留着 8086 实模式,vulnerabilities 一大堆,你猜是好事还是坏事?

    AMD 这次砍了一刀上古指令。砍得好。
    reus
        23
    reus  
       2020-04-02 13:32:58 +08:00
    vs 是 32 位程序,用到某些需要大量内存的插件,就会超出内存限制,不论跑在 32 位系统,还是 64 位系统。

    和操作系统无关,纯粹就是 vs 极重难返,懒得下力气去改。

    @nannanziyu “分不清应用程序和操作系统吗?”这个问题应该问你自己,这个帖子本来就是讨论 vs 这个应用程序,是你自己跑题到操作系统的。
    alphatoad
        24
    alphatoad  
       2020-04-02 13:34:00 +08:00   ❤️ 1
    「几年前写个工具软件,过两年就不能用了,还鼓掌拍手的,我也就见过果粉」我还真没见过一个正经的软件是拒不支持 Catalina 的,Wine 这种依赖 32 位的翻译器除外。
    也就软粉还留着上古年代的软件当宝了。Apple 几年前就发出通告以后会 drop 32bit,不迭代不听劝告的软件开发商自然会被市场淘汰。
    Windows 搞了这么多年 HiDPI 都有那么多软件不支持。作为上游的操作系统不强制要求迭代,软件开放商怎么可能会主动跟进。
    吹 legacy api 的真的搞过软件工程吗
    nannanziyu
        25
    nannanziyu  
       2020-04-02 13:41:12 +08:00   ❤️ 8
    楼上果粉脑子烧坏证据+2
    特征值:非黑即白,提到向下兼容,就让别人去用 16 位软件。

    1,做软件的,谁不知道扔掉包袱,轻装上阵舒服。
    软件迭代到后面,很多工作都在做版本迁移适配。
    最简单的配置文件每次增删配置项,都要考虑考虑又考虑。
    自己做个小的应用程序都要考虑版本兼容,遑论操作系统。
    2,
    没有历史包袱轻装上阵,换来的是以后更好的发展,真是妙
    于是
    你进火车站刷身份证,“对不起,身份证识别系统已经升级为 3.4.2,您的身份证版本还是 3.4.1,请到所在地派出所更换最新版后再刷”

    于是
    你打开 chrome,地址栏输入 http://www.newsmth.net ,回车,“对不起,chrome68.x.x.x 只支持 http2.0,对方主机依然使用 http1.1,请联系对方网络管理员升级服务器”

    于是
    你要打电话,掏出手机,发现没有信号,打 10000/10086,对方甜美的声音告诉你“对不起,本市基站已经升级,只支持 Volte x.x.x.x,您的手机基带只支持 x.x.x.x-1,请您到最近的营业厅购买新手机”

    ......

    于是
    你买了台电脑,隔几天后又买了个手机,发现手机无法连接电脑,因为手机接口是已经升级为 USB 8.1,而电脑还是 USB 8.0 ;然后你又买了台电脑,发现手机还是连接不了,因为电脑接口又升级到 USB8.2 了(这个场景是不是似曾相识?如果是,恭喜你,你也见过果粉拿着 iPhone7 在 new MacBook Pro 前发懵的场景了)

    幸运的是,上述场景都只是假想(什么?你说对于果粉来说,最后一条是真的?不,对于果粉,整个人生都是乔布斯给他织就的梦境),每个人都在无意中享受着向下兼容带来的便利,只是不知道对应的人员为了向下兼容做出了多么大的努力。谁不知道扔掉包袱前进更舒畅呢,不能那么做而已。
    为什么水果可以?
    就因为有许多把 bug 都能说成 feature,用来跟别人解释水果对用户多负责的果粉存在啊。
    alphatoad
        26
    alphatoad  
       2020-04-02 13:48:27 +08:00   ❤️ 1
    楼上挺逗的,应该不是软粉,我见过的软粉都是喜欢 fluent design, uwp etc,没见过喜欢老古董的
    1 、
    「我可以让你用 32 位软件,你不能让我用 16 位软件哦」
    2 、
    「同志,你凭什么不认我的一代身份证!你们强推二代证不让我用一代证,我绝对不换!绝对不!」

    幸运的是,上述场景只是假设。真正的世界,人类勇于探索,承认过去的不足,勇于 break backward compatibility 。
    alphatoad
        27
    alphatoad  
       2020-04-02 13:51:46 +08:00
    谁不知道迭代要钱。现在迭代要钱,以后迭代要命。
    真成屎山了,就不是钱能解决的问题了。
    nannanziyu
        28
    nannanziyu  
       2020-04-02 13:54:28 +08:00
    1,「我还真没见过一个正经的软件是拒不支持 Catalina 的,Wine 这种依赖 32 位的翻译器除外。」
    所以,凭啥我前年写的自用的管理工具,截图 OCR 工具,没时间更新,就不是正经软件了?
    2,windows10 支持 16 位应用程序,请了解 NTVDM
    nannanziyu
        29
    nannanziyu  
       2020-04-02 13:55:35 +08:00
    自用的管理工具 -> 自用的 git finder extention 管理工具
    alphatoad
        30
    alphatoad  
       2020-04-02 14:01:21 +08:00   ❤️ 1
    1,High Sierra 前 Apple 早就发出通告以后会终止支持 32bit,三年多都不迭代,你也别搞了。日本一大坨 win9*的系统照样跑,自用谁管你。
    2,我当然知道 win10 支持 16 位程序,但这不是你用 16 位程序的理由。
    alphatoad
        31
    alphatoad  
       2020-04-02 14:11:08 +08:00   ❤️ 2
    任何一个技术都有生命周期,Apple 给了合适的终止支持的时间,给了替代解决方案,很好。
    M$ 在合适的时间终止了 XP 、Win7 的支持,给了 Win10,这很好。
    你不能要求上游无止境地满足你的要求。你不能指望 Intel 无止境地包括 8086 实模式的电路,这样复杂性会飙升且有 vulnerbilities. 你不能在 2020 年用 ActiveX,这样对用户不负责任。世界在向前进,固步自封必然会导致更大的问题。
    Mithril
        32
    Mithril  
       2020-04-02 14:27:42 +08:00
    @alphatoad 面向终端消费者的可以这么搞,但是有很多工业级别的应用都跑在 Windows 上,没法这么搞的。
    生产 ATM 的厂商可以因为漏洞得不到更新去升级新的 Windows,但是你跟他说新的 Windows 不支持 32 位程序了让他重写?完全不现实。
    一个开发了很久的系统固然迭代困难,但也经过了长时间的考验不会出太大的问题。特别是一些重要的系统里,能不升级就不升级才是常态。
    目标用户不一样而已,不能用苹果做系统的思维方式去考虑 Windows 。
    alphatoad
        33
    alphatoad  
       2020-04-02 14:36:55 +08:00
    @Mithril 面向工业界当然不用这么搞。我上面有提到,日本太多 win9x 的系统还在跑。只要使用范围局限了,不 catch up 自然没有任何问题。
    但同时也有新的问题,新硬件不支持旧软件。很多旧系统依赖老电路,硬件挂了之后没有接替的方案。这次 AMD 砍了上古指令之后一些 win9x 的虚拟机会挂掉对一些人来说很头痛。
    上面那个老哥有一点我认同,这不是非黑即白的问题。
    luhe
        34
    luhe  
       2020-04-02 14:44:47 +08:00   ❤️ 3
    3 楼上来就给别人扣个果粉的帽子骂脑子烧坏了...主题是 vs 为什么不迁移到 64 位,硬是能开启撕逼模式...
    ahaxzh
        35
    ahaxzh  
       2020-04-02 15:10:07 +08:00
    我喜欢 64 位,但是我也需要 32 位。就像偶尔我还得开个 Windows XP 的虚拟机一样。不要问为什么,存在即合理,主要是你没有办法去做出改变。
    CommandZi
        36
    CommandZi  
       2020-04-02 15:16:30 +08:00
    @Mithril 生产 ATM 的厂商可以因为漏洞得不到更新去升级新的 Windows,但是你跟他说新的 Windows 不支持 32 位程序了让他重写?
    这就是现实,漏洞得不到更新不就是因为终止支持了,WindowsXP 终止支持多久了?难道再要求微软支持到 2200 年?既然你不愿意重写,那你就继续用 WindowsXP 合情合理。关键这些生产商当初开发的时候肯定是定了部署环境为 WindowsXP,肯定没写 Windows10
    reus
        37
    reus  
       2020-04-02 16:21:28 +08:00
    有些人总喜欢拿 ATM 做例子,于是我又搜索了一下“ATM win10 update”,看看真是世界里 ATM 是怎么升级的。

    我发现了这么一个案例: https://www.google.com/search?q=ATM+32bit+update&newwindow=1&client=firefox-b-d&ei=N56FXpH7C5ix0PEPgYO94A4&start=10&sa=N&ved=2ahUKEwjR8rbLpcnoAhWYGDQIHYFBD-wQ8NMDegQICxBQ&biw=1367&bih=803

    win7 升级到 win10,但是 win10 不支持当前的主板,你猜他们怎么处理的?

    先装一个 linux,然后在 linux 上跑 win10 。因为 linux 支持旧主板,所以不需要升级硬件,因为虚拟机跑了 win10,所以不需要修改软件。

    看到了没,win10 虽然兼容旧程序,但硬件驱动就不一定了,有些旧硬件,win10 根本没有驱动。微软为什么抛弃了他们?

    虽然这个例子和不支持 32 位程序有差别,但我想说明的是,就算是 ATM,升级硬件升级软件也不算什么不得了的事情,他们甚至敢装 linux 跑 windows 再跑 ATM 软件。
    crella
        39
    crella  
       2020-04-02 19:36:12 +08:00 via Android
    那么 vs 升级到了 64 位就能卖出更多的副本了吗?

    office 升级 64 位确实能让 excel 打开更大更复杂的表格。
    elfive
        40
    elfive  
       2020-04-02 19:51:17 +08:00 via iPhone
    @luhe 我也觉得搞笑,MacOS 最新的几个版本确实去掉了对 32 位程序的支持,但是人家更新日志告诉你了,你可以选择不升级操作系统啊,自己不看更新日志,然后升级了系统,导致自己 32 位程序运行不了,这不是自己造的孽么?我还说 Windows10 强制更新导致我驱动和软件不兼容,这点和 Apple 比起来,那不是一个天上一个地下了?
    feather12315
        41
    feather12315  
       2020-04-02 19:59:37 +08:00
    @alphatoad #31 Intel 就是靠兼容性奠定当前 x86 地位的,早年间又不是没有过安腾这种推到重来的例子。
    alphatoad
        42
    alphatoad  
       2020-04-02 20:30:07 +08:00   ❤️ 1
    @feather12315 过度技术总有生命周期,32 位不能无限地支持下去
    leoleoasd
        43
    leoleoasd  
       2020-04-03 08:17:43 +08:00
    @feather12315 #41 但是 intel 也是因为他的 IA64 不与 x86 兼容, 才被 amd64 按在地上摩擦的...
    feather12315
        44
    feather12315  
       2020-04-03 11:00:55 +08:00 via Android
    @leoleoasd #43 IA64 是纯 64 位的,本意就是在以全新的指令集架构升到 64 位,早期不兼容 IA32,后期被迫做了兼容(性能还差)。AMD 因此才从 IA 32 发展了 AMD 64
    leoleoasd
        45
    leoleoasd  
       2020-04-03 11:58:28 +08:00
    @feather12315 #44 哦哦那是我不太了解
    BasIrs
        46
    BasIrs  
       2020-04-03 16:46:04 +08:00   ❤️ 1
    感觉你们聊得都好高深 看的一愣一愣的 都是大神啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2209 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:11 · PVG 09:11 · LAX 17:11 · JFK 20:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.