feifei003

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

  •  
  •   feifei003 · Apr 2, 2020 · 6029 views
    This topic created in 2257 days ago, the information mentioned may be changed or developed.

    看到这篇文章

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

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

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

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

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

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

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

    @nannanziyu “分不清应用程序和操作系统吗?”这个问题应该问你自己,这个帖子本来就是讨论 vs 这个应用程序,是你自己跑题到操作系统的。
    alphatoad
        24
    alphatoad  
       Apr 2, 2020   ❤️ 1
    「几年前写个工具软件,过两年就不能用了,还鼓掌拍手的,我也就见过果粉」我还真没见过一个正经的软件是拒不支持 Catalina 的,Wine 这种依赖 32 位的翻译器除外。
    也就软粉还留着上古年代的软件当宝了。Apple 几年前就发出通告以后会 drop 32bit,不迭代不听劝告的软件开发商自然会被市场淘汰。
    Windows 搞了这么多年 HiDPI 都有那么多软件不支持。作为上游的操作系统不强制要求迭代,软件开放商怎么可能会主动跟进。
    吹 legacy api 的真的搞过软件工程吗
    nannanziyu
        25
    nannanziyu  
       Apr 2, 2020   ❤️ 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  
       Apr 2, 2020   ❤️ 1
    楼上挺逗的,应该不是软粉,我见过的软粉都是喜欢 fluent design, uwp etc,没见过喜欢老古董的
    1 、
    「我可以让你用 32 位软件,你不能让我用 16 位软件哦」
    2 、
    「同志,你凭什么不认我的一代身份证!你们强推二代证不让我用一代证,我绝对不换!绝对不!」

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

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