问题标签 [32bit-64bit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 应用程序在 64 位与 32 位英特尔架构中的表现如何?
我想知道普通 C++ 应用程序在以下场景中的相对性能:
- 构建为 32 位应用程序,在 Intel 64 位处理器 (x64-64) 上运行
- 构建为 32 位应用程序,在 Intel 32 位处理器 (x86) 上运行
- 构建为 64 位应用程序。
另外,在修改/开发应用程序以使其在 64 位处理器上运行得更快时,我应该考虑哪些因素?
.net - CPU 体系结构独立 P/Invoke:DllName 或路径可以是“动态的”吗?
有没有办法让 P/Invoke (DllImport) 签名引用的特定 DLL 取决于 CPU 架构?
我正在开发一个应用程序,该应用程序从第三方供应商的本机 dll 加载大量方法签名,在本例中是用户空间接口 DLL 到一个硬件。该供应商现在已经开始提供 DLL 的 x86 和 x64 版本,我认为我的应用程序将受益于作为 64 位进程运行。除了这个 DLL,一切都是 .NET 代码,因此构建为“任何 CPU”都可以。
本机 DLL 中的所有方法签名在 64 位上都是相同的,但是 DLL 的名称不同(Foo.dll 与 Foo_x64.dll)。有没有办法通过 P/Invoke 签名或 app.config 条目,我可以让它根据正在运行的 CPU 架构选择要加载的 DLL?
如果不是不同的 DLL 名称而是不同文件夹中的相同名称,那会打开任何其他选项吗?
注意:因为此用户空间 DLL 的版本必须与已安装的硬件内核驱动程序相匹配,所以 DLL 不与我们的应用程序捆绑在一起,而是依赖供应商安装程序将其放置在 %小路%。
c# - BHO 插件不适用于 64 位操作系统上的 IE7
在 IE7 32bit XP/Vista 上流畅运行的 BHO 不适用于 64bt XP/Vista 上的 IE7。我怀疑问题出在注册 BHO 程序集上。谁能有一个好的解决方案让 BHO 适用于 64 位平台?
谢谢,
达特
.net - 如何分析程序集文件以获取其标志?
我需要编写代码来读取.net 程序集的corflags,而无需通过反射加载它。
加载程序集需要相对较长的时间,因此我正在寻找可以将其作为流打开并分析二进制流的东西。
在哪里可以找到有关程序集二进制元数据结构的信息?有可用的代码片段吗?
谢谢萨尔
.net - 从 32 位开发到 64 位开发,需要澄清 .net 框架和平台
快速背景:我在 Vista-x64 机器上的 .net 3.5 下的 VS2008 中开发 C#
我最近切换到Vista-x64,经过一番搜索,我仍然觉得我不完全了解OS和.net框架之间的相互作用。我想对此进行一些更正/澄清。
以下是我对开发过程的理解(如有错误请指正):
当我设置我的项目时,我可以设置平台目标:x64、x86、AnyCpu。据我了解,AnyCpu 将针对当前平台(在我的情况下为 x64)。我也可以针对 x86 并仍然执行它(由于 WoW64)。
我假设当我以 x64 为目标时,该程序将使用 64 位 .net 框架 3.5,以及类似的用于 x86 的 32 位框架。它是否正确?
让我感到困惑的是,当我以 x64 为目标并打印出平台信息时,它会打印“ WIN32NT ”。这让我相信“ WIN32NT ”不是我想的那样,但我还没有找到很多关于这个的信息。这是什么?
谢谢。
c# - 创建 64 位应用程序
如果我有一个用 C# 编写的 32 位应用程序,我需要做什么才能将其转换为 64 位?我假设它更复杂,然后只需在 Visual Studio 中将目标机器更改为 64 位并重新编译。
.net - 在 64 位操作系统中运行 32 位 .NET 应用程序很慢
我的环境:asp.net 3.5 framework with xp
我有一个查询。我们使用 32 位开发我们的产品。当我们在 64 位机器(windows 2008 虚拟机)中部署时,与 32 位版本的 iis 相比,它似乎非常慢。我们是否需要在 64 位机器中重新编译我们的程序集以在 64 位环境中获得更快的响应?
或者是否需要在 64 位机器上进行任何配置?如果 dll 以 32 位编译,是否只在 32 位 iis 中运行以获得更快的性能?
asp.net - 是在 64 位 Windows LARGEADDRESSAWARE 上运行的 32 位 ASP.NET 应用程序
我有一个使用 32 位非托管 DLL 的现有 32 位 ASP.NET 应用程序。
如果我在 64 位操作系统上运行它,它会自动成为 LARGEADDRESSAWARE(即可以访问全部 4GB 虚拟内存)吗?
如果没有,我该怎么做才能使它成为 LARGEADDRESSAWARE?
谷歌搜索出现了这个问题,但它缺乏上述问题的答案。
编辑
此博客建议 ASP.NET 1.1 工作进程是 LARGEADDRESSAWARE,但对 ASP.NET 2.0 保持沉默:
如果使用 boot.ini 中的 /3Gb 开关引导系统(仅支持 Windows 2000 的企业版和数据中心版,以及所有版本的 Windows XP 和 Windows Server 2003),则与 /LARGEADDRESSAWARE 开关链接的进程可以“见“3Gb。Aspnet_wp.exe 在 1.1 版中以这种方式链接,并且可以利用它。
编辑 2
这是另一个博客,建议 32 位 ASP.NET 应用程序是 LARGEADDRESSAWARE,但没有提及 ASP.NET 版本:
我们发现由 ASP.NET 框架托管的组件正在利用 > 2 gig 的内存空间
我必须说,我对缺乏关于这个主题的权威公开信息感到惊讶。
performance - Fortran:32 位/64 位性能可移植性
我已经开始将 Fortran (95) 用于一些数字代码(生成 python 模块)。这是一个简单的例子:
我发现这在 32 位中表现得非常好,但是当编译为 x86_64 时,它慢了大约 5 倍(来自 r.research.att.com 的 macbook pro core2duo、snow leopard、gfortran 4.2.3)。我终于意识到这可能是由于使用 32 位整数类型而不是本机类型,实际上当我用整数 * 8 替换时,64 位性能仅比 32 位低 25%。
为什么在 64 位机器上使用 32 位整数要慢得多?索引是否有我可能不知道的隐式转换?
对于这种类型的代码,64 位是否总是比 32 位慢(对此我感到很惊讶)——或者我是否有机会让 64 位编译版本以相同或更快的速度运行?
(主要问题)有没有办法将(整数)变量声明为“本机”类型......即在现代 fortran 中编译为 32 位时为 32 位,在编译为 64 位时为 64 位。没有这个,似乎不可能编写出不会变慢的可移植fortran代码,具体取决于它的编译方式——我认为这意味着我将不得不停止在我的项目中使用fortran。我查看了 kind 和 selected_kind 但找不到任何这样做的东西。
[编辑:较大的性能损失来自 f2py 包装器复制数组以将其从 64 位 int 转换为 32 位 int,因此 fortran 没有任何固有的内容。]
perl - 如何让 OS X 10.6 将 JSON::XS 编译为 32 位而不是 64 位?
我在 OS X 10.5 下编译了 Perl 5.10.1。它被编译为 32 位程序。我已经升级到 OS X 10.6。我的 Perl 5.10.1 版本继续正常工作,但我只是尝试编译 JSON::XS 并得到如下错误:
Can't load '/Users/cowens/.cpan/build/JSON-XS-2.26-clO6XX/blib/arch/auto/JSON/XS/XS.bundle' for module JSON::XS: dlopen(/Users/cowens/.cpan/build/JSON-XS-2.26-clO6XX/blib/arch/auto/JSON/XS/XS.bundle, 2): no suitable image found. Did find: /Users/cowens/.cpan/build/JSON-XS-2.26-clO6XX/blib/arch/auto/JSON/XS/XS.bundle: mach-o, but wrong architecture at /Users/cowens/local/lib/perl5/5.10.1/darwin-thread-multi-2level/DynaLoader.pm line 204.
快速浏览一下/Users/cowens/.cpan/build/JSON-XS-2.26-clO6XX/blib/arch/auto/JSON/XS/XS.bundle
,它确实是一个 64 位库:
/Users/cowens/.cpan/build/JSON-XS-2.26-clO6XX/blib/arch/auto/JSON/XS/XS.bundle:Mach-O 64 位捆绑包 x86_64
由于这很可能是罪魁祸首,我想尝试将模块编译为 32 位。我假设有一些环境变量(如CCFLAGS
)我可以设置强制它编译为 32 位库而不是 64 位库。
另一种方法似乎是重新编译 Perl 和我的所有模块(我不确定我是否想要这样做)。