PHP能知道服务器操作系统是否是64位的吗?
我在这里处理Windows. 我知道您可以使用$_SERVER['HTTP_USER_AGENT']变量来检测查看页面的浏览器OS,但是PHP可以检测服务器的OS吗? 对于我的程序的UI,我正在使用PHP网页.我需要阅读注册表中的一个键,该键位于64位OS上的不同位置(它在Wow6432Node键下). PHP可以告诉它正在运行什么操作系统? PHP可以告诉OS是64位还是32位? 解决方案 注意:此解决方案比 @salman a的答案.我建议您使用他的解决方案并检查 PHP_INT_SIZE == 8 ,看看您是否在64位OS. 如果您只想回答32bit/64bit的问题,那么像这样的偷偷摸摸的小函数将有能力(利用INTVAL函数基于32/64位处理INT的方式.) )
0 2023-05-26
编程技术问答社区
从64位数字转换为32位数字
尝试很多,只是失败. $x = 76561198005785475; 我想进入这个数字,转到这个数字: $y = 45519747; 那是它的32位形式. 试图解释更多详细信息: /a> 1)将值76561198005785475放在"小数(输入)"字段上. 2)在"二进制(基本2)"字段上按" dec to bin". 3)计数32从右边开始并复制. 4)在"二进制(基本2)"字段上粘贴32个字符二进制数. 5)按"二进制(base 2)"字段上的" bin到dec"按钮. 好吧,现在您可以看到" 45519747"号码. 解决方案 尝试以下方法: $y = $x & 0xffffffff; 这将使您的64位值截断为32位值,但请注意,绝对没有办法获得64位值,这是一种破坏性的方法. 其他解决方案 我尝试了许多解决方案.但是没有人帮我.最后,遵循脚本挽救我的生命. function intval32bits($
0 2023-05-26
编程技术问答社区
强制Perl在32位模式下工作
我们有一个旧的Perl应用程序.最近,我们搬到了运行64位Ubuntu的新服务器. 旧应用程序使用包装/拆卸功能和位操作,现在它失败了,因为位操作返回64位整数而不是32位. 有没有办法将Perl迫使PERL进入32位模式? 如果没有,是否可以在64位机器上安装32位Perl? 谢谢! 解决方案 有没有办法将Perl强加于32位模式? 否,但是您可以切换到使用正确的(便携式)包装/拆卸图案,并在bit twiddling时使用& 0xFFFFFFFF. 如果没有,是否可以在64位机器上安装32位Perl? 来自INSTALL: 本地64位系统既不需要-duse64bitint也不需要-duse64bitall.在这些系统上,这可能是默认的汇编模式,目前尚无法保证将不使用64bitall选项传递到配置过程将构建32位PERL.实施-duse32bit*计划将来发布Perl的未来版本. 所以答案是:也许,但也许不是. 其他解决方案 看来,您可
0 2023-05-24
编程技术问答社区
在JVM中,64位整数的效率是否比32位整数低?
背景:我想存储精确到4个小数位置的数字,而没有回合.所以我想到了内部使用整数;例如,12.3456在内部表示为123456.但是有了32B整数,我只能计算最多214748 ,它很小. 我想64位整数是解决方案.但是,给定有64位JVM的机器,涉及64位整数的操作是否比32位整数的效率 更低? 顺便说一句,我正在使用信息检索软件包(SOLR),优化软件包(Drools)和其他软件包 Java ,它们可能无法使用小数数据表效果(如果您建议您建议使用) ). 解决方案 即使速度较慢,我怀疑这将是您系统中的瓶颈.您很可能会在程序的其他部分遇到更大的性能问题. 另外,答案的答案是这个问题提供更多详细信息,但基本上是"平台取决于平台".这不一定为64位会比32位慢. 其他解决方案 这可能是平台依赖的.我已经看到使用long而不是int的情况快约10%. Java 5.0的64位JVM比Java 5.0的32位JVM慢5% - 10%. Java 6似乎没有这个问题.
2 2023-05-24
编程技术问答社区
双精度操作。32位与64位机器
与在32位计算机上执行64位操作时,我们为什么不看到执行64位操作(例如双精度操作)的性能两倍? 在一台32位机器中,我们不需要从内存中获取两倍吗?更重要的是,我们不需要两倍的周期才能执行64位操作吗? 解决方案 " 64位机器"是一个模棱两可的术语,但通常意味着处理器的通用寄存器为64位宽.比较 8086 和 8088 ,它具有相同的说明集,并且在这种意义上都可以称为16位处理器 . . 从这个意义上使用该短语时,它与内存总线的宽度,CPU内部总线的宽度以及ALU在32或64-上有效运行的能力无关.宽大的数据. 您的问题还假设乘法的最难部分是将操作数移至处理器内部乘法的设备,即使操作数来自内存,并且总线为32--,这也不是真的.有点宽,因为延迟!=吞吐量.同样,关于浮点乘法的数学,64位乘法的难度不是32位的两倍,它大致是(53/24) 2 很难(但是,,,同样,无论通用寄存器的宽度如何 其他解决方案 在一台32位机器中,我们不需要从内存中获取两倍?
0 2023-05-24
编程技术问答社区
32位的SPARC V8应用程序能否在64位的SPARC V9上运行?
我对SPARC V8 32位体系结构的基准应用程序很少.我将它们用于SPARC 32位处理器的性能评估.但是,很少有申请表现不足.我想通过64位SPARC V9体系结构(例如OpenSparc T1/T2)测试性能.我的问题是,在SPARC V9体系结构中运行的32位SPARC V8架构的编译二进制文件是否没有任何修改?两个体系结构中的二进制文件是否兼容? 解决方案 假定您正在使用相同的操作系统,尽管也许是在较新的版本上.好的. Solaris SPARC非常二元向后兼容.考虑到这一点,SPARC体系结构的每个修订版都是为此设计的. 您应该牢记的事情: sparc v7是最低的共同点,但是实际上,sparc v8 wil覆盖了99%的机器. SPARC V7通常缺少硬件浮点,因此在大多数情况下,它有时会添加为加速器. SPARCV8代码在某些情况下的速度比SPARCV9 64位代码更快,因为指示器的一半是一半. SPARC V9的最佳代码通常是SPARC V8+
2 2023-05-24
编程技术问答社区
C++ 64位int:通过引用传递或通过值传递
这是一个关于64位INT的效率问题.假设我不需要修改" int"参数的值,则应通过值或参考将其传递. 假设32位机器: 1)32位int:i 猜测答案是"按值",因为"通过参考"将具有额外的内存查找的开销. 2)64位int:如果我通过参考文献,我只会在堆栈上传递32位地址,但需要额外的内存查找.那么其中哪一个更好(参考或值)? 如果机器为64位怎么办? 问: JP 解决方案 按价值通过 - 绝对.如果系统为64位,则意味着它将非常快速复制64位单词. 其他解决方案 即使在64位机器通过值中,也更好(一些例外),因为它可以作为寄存器值传递. 其他解决方案 以boost::call_traits::param_type的方式传递它们.该模板捕获了通过受支持平台上任何类型的任何类型的最佳实践.因此,在32位和64位平台上会有所不同,但是您可以在任何地方使用相同的代码.它甚至可以在您尚不知道精确类型的其他模板中工作.
4 2023-05-23
编程技术问答社区
32位指针与x86-64 ISA:为什么不呢?
X86-64指令集添加了更多寄存器和其他改进,以帮助简化可执行代码.但是,在许多应用中,指针尺寸增加是一个负担.每个指针中的额外未使用的字节堵塞了缓存,甚至可能溢出RAM.例如,GCC使用-m32标志构建,我认为这是原因. 可以加载32位值并将其视为指针.这不需要额外的说明,只需加载/计算32位并从结果地址加载即可.但是,由于平台具有不同的内存图,所以技巧将无法移植.在Mac OS X上,保留了整个低4个地址空间.尽管如此,对于我写的一个程序,在使用之前,将0x100000000L hackish添加到32位"地址"中,在使用-m32>的情况下,改进的性能大大改善了性能. . 拥有32位,X86-64平台有任何根本障碍吗?我想支持这种嵌合体会为任何操作系统增加复杂性,任何想要最后20%的人都应该使其正常工作™,但是这似乎仍然适合各种计算密集型程序. 解决方案 开发中有一个名为" x32"的ABI.这是与您所描述的相似的X86_64和IA32之间的混合物-32位地址空间,同时
0 2023-05-23
编程技术问答社区
欧拉问题和Int64类型的递归的性能问题
我目前正在学习使用项目Euler问题作为我的操场的Haskell. 我对我的Haskell程序的速度与类似的速度相比感到惊讶 用其他语言编写的程序.我想知道我是否预见了某些东西,还是使用Haskell时必须期望的绩效惩罚. 受到问题331的启发中的以下程序,但是我在发布之前将其更改了,因此我不会为其他人破坏任何东西.它计算在2^30 x 2^30网格上绘制的离散圆的弧长.这是一个简单的尾部递归实现,我确保累积变量的更新密切跟踪ARC长度.然而,几乎需要一分钟半分钟才能完成(用-o旗用GHC编译). import Data.Int arcLength :: Int64->Int64 arcLength n = arcLength' 0 (n-1) 0 0 where arcLength' x y norm2 acc | x > y = acc | norm2
0 2023-05-23
编程技术问答社区
为什么在x64 Java中long比int慢?
我正在运行Windows 8.1 x64,使用Java 7 Update 45 X64(未安装32位Java)在Surface Pro 2平板电脑上. 当i的类型为长时间,当我为int时,下面的代码需要1688ms.为什么长(64位类型)的数量级要比64位JVM的64位平台上的INT慢? 我唯一的猜测是,添加64位整数所需的时间比32位的整数需要更长的时间,但这似乎不太可能.我怀疑Haswell不使用Ripple-Carry Adders. 我在Eclipse Kepler SR1中运行此操作,btw. public class Main { private static long i = Integer.MAX_VALUE; public static void main(String[] args) { System.out.println("Starting the loop"); long sta
0 2023-05-23
编程技术问答社区
在32位系统上使用int64_t而不是int32_t,对性能有什么影响?
我们的C ++库当前使用time_t来存储时间值.我开始在某些地方需要次秒的精度,因此无论如何都需要较大的数据类型.另外,在某些地方遇到2038年的问题可能很有用.因此,我正在考虑用基础INT64_T值完全切换到单个时间类,以替换所有位置的time_t值. 现在,我想知道在32位操作系统或32位CPU上运行此代码时,这种更改的性能影响. iiuc编译器将使用32位寄存器生成代码以执行64位算术.但是,如果这太慢了,我可能不得不使用更差异化的方式来处理时间值,这可能会使软件更难维护. 我感兴趣的是: 哪些因素会影响这些操作的性能?可能是编译器和编译器版本;但是,操作系统或CPU也会影响这一点吗?普通的32位系统会使用现代CPU的64位注册吗? 在32位模拟时,哪些操作特别慢?或哪个几乎不会放缓? 在32位系统上使用int64_t/uint64_t是否有现有的基准结果? 有人对这种表现影响有自己的经验吗? 我对Intel Core 2系统的Linux 2.6(R
0 2023-05-23
编程技术问答社区
为32位和64位编译时有巨大的性能差异(快了26倍
我试图在访问价值类型和参考类型列表时测量使用for和a foreach的差异. 我使用以下课程进行分析. public static class Benchmarker { public static void Profile(string description, int iterations, Action func) { Console.Write(description); // Warm up func(); Stopwatch watch = new Stopwatch(); // Clean up GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); watch.Start(); for (int i = 0; i
0 2023-05-23
编程技术问答社区
试分代码在Windows上的32位运行速度比Linux上的64位快2倍
我的代码在窗口上比Linux上的代码快2倍. 这是我测量的时间: g++ -Ofast -march=native -m64 29.1123 g++ -Ofast -march=native 29.0497 clang++ -Ofast -march=native 28.9192 visual studio 2013 Debug 32b 13.8802 visual studio 2013 Release 32b 12.5569 这确实是一个巨大的区别. 这是代码: #include #include #include static std::size_t Count = 1000; static std::size_t MaxNum = 50000000; bool IsPrime(std::size_t num) { for (std::size_t i =
0 2023-05-23
编程技术问答社区
如何在单个Inno Setup安装程序中添加x86和x64 VC++ 2019的再分配程序?
我正在尝试在单个设置中添加架构[x32和x64] VC ++ 2019(v14.26.28720.03).我成功地编译了,但是在运行时我在ExtractTemporaryFile('#VcInstall'); 中得到了例外 ;Version: v14.26.28720.03 [Setup] #if arch == "x32" #define VcInstall "VC_redist.x86.exe" #else #define VcInstall "VC_redist.x64.exe" #endif [Files] Source: ".\Redist\{#VcInstall}"; DestDir: {tmp}; Flags: dontcopy [Run] Filename: "{tmp}\{#VcInstall}"; Parameters: "/q /norestart"; \ Check: VC2019RedistNeedsInstall; Flags: wai
6 2023-05-23
编程技术问答社区
如何在Win 64上使用32位JDK启动Oracle SQL Developer 4?
我需要连接到数据库并使用钱包文件. 如果我尝试与我的SQL开发人员一起使用" ocijdbc.dll:cant cant cant in amd 64位平台上的加载ia 32bit .dll". 我都安装了JDK 32位(在C:Prog32bit)和JDK 64位(C:PROG)进行开发. 我尝试在sqldeveloper/bin/sqldeveloper.conf中设置javahome setjavahome c:\ program文件(x86)\ java \ jdk1.7.0_51 我的下一步是编辑%user_home%/sqldeveloper/sqldeveloper.conf,我也将setjavahome设置在此处,但没有一个. 下一步是,我编辑了sqldeveloper/bin/sqldeveloper.bat和set: JAVA_HOME="C:\Program Files (x86)\Java\jdk1.7.0_51" path="C:\P
0 2023-05-21
编程技术问答社区
当支持64位的架构增加时,苹果Mach-O链接器出错
我一直在尝试在项目中启用64位,因为这现在是将应用程序提交给App Store的要求.到目前为止,我所做的用来将我的应用转换为支持64位实际上正在遵循我在Stackoverflow上搜索的其他问题/答案,而我发现的内容归结为 SET 架构 to "标准体系结构(ARMV7,ARM64)" 设置有效体系结构 to " ARM64 ARMV7 ARMV7S" set 仅构建主动体系结构 " no" (有人提到了这一点,所以我只是尝试了) 上面的错误 Apple Mach-O链接器错误.我完全遇到了13个错误.它们以下图显示的详细信息显示: 在我看来,它就像一个分析框架问题,但我太新了,无法肯定知道这一点.即便如此,我还是试图用我从其网站下载的新框架来替换我当前的解析.它创造了更多的问题,这可能是由于我如何更换新框架而导致的.我在Parse网站上搜索了更新框架的最佳方法,但是我发现的答案似乎没有某些方法可以做到这一点.无论如何,我遵循此所以我决定在这里放弃我的问题,希望有
0 2023-05-20
编程技术问答社区
雪豹(OS X 10.6)中的InputManager插件
我从各个地方获得了矛盾的报告. Engadget的评论说,InputManager插件被完全忽略(如果应用程序以32位模式加载,则会引起奇怪的行为),但是此邮件列表线程表示,如果32/64-bit兼容性正确. 所以我有两个问题: 我们是否可以在Snow Leopard中使用InputManager? 如果是,它的工作方式与豹子中的方式相同.如果没有,什么是好方法(因为1Password显然正在解决修复程序)? 解决方案 如果您确实需要将代码注入应用程序以完成您尝试做的事情,请使用 mach_inject . 和请其他解决方案 可可/appkit.html#nsinputmanager 现在正式不支持位于InputManagers文件夹中的捆绑包的自动加载.有效输入管理器捆绑包的条件进一步拧紧.此功能可能会在以后的版本中被禁用. 现在有效的安装仅限于 /库/InputManagers文件夹. 其他位置的捆绑包是 默默地忽略. 捆绑包和/库/i
0 2023-05-15
编程技术问答社区
在64位的OS X 10.6上使肥大的二进制文件倾向于32位的正确方法?
假设我问用户"您想以32位模式或64位模式运行",然后他们选择32位.如何在操作系统上注册这个事实?我已经看了看 arch 命令,但我不想编写包裹二进制文件的脚本.我怀疑有一种方法可以做到这一点,但是我找不到文档(除了拱门). 解决方案 尝试使用此Info.plist键, LSArchitecturePriority : LSArchitecturePriority i386 x86_64 ppc ppc64 只是不要通过动态更改程序的捆绑包来做到这一点.运行程序的用户可能无权写入.如果您需要以每个用户为基础执行此操作,则包装器脚本将是首选的选择. 其他解决方案 您可能正在寻找 lsarchitecturepriority . 其他解决方案
2 2023-05-15
编程技术问答社区
Mac OSX 10.6编译器:32位与64位的不解之缘
我很难理解OSX 10.6 Snow Leopard提供的GCC编译器,这主要是因为我缺乏64位环境的经验. $ cat >foo.c main() {} $ gcc foo.c -o foo $ file foo foo: Mach-O 64-bit executable x86_64 $ lipo -detailed_info foo input file foo is not a fat file Non-fat file: foo is architecture: x86_64 但是,我的体系结构被视为Intel I386类型(我有最新的Intel Core2 Duo MacBook之一) $ arch i386 和编译器目标I686-Apple-darwin10 $ gcc --version i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646) 当然,如果我编译了32
2 2023-05-15
编程技术问答社区
如何在Snow Leopard上强制Python为32位,以及其他32位/64位问题
当我从Mac上的bash shell运行以下内容时: $ file /usr/bin/python 我得到以下三行: /usr/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64 /usr/bin/python (for architecture i386): Mach-O executable i386 /usr/bin/python (for architecture ppc7400): Mach-O executable ppc 这似乎表明Python已针对所有三个架构或类似的东西进行了编译?我相信,基于我在设置MySQL时遇到的一些错误,我正在使用的版本是64位版本.所以两个问题: 我将如何知道? 我如何更改python为32位?与不同编译设置的重新编译相比,有些剧烈的东西? 为什么arch来自bash shell返回i386,这似乎表明我不在"
0 2023-05-15
编程技术问答社区