Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;在以Objective-c为主的项目中,代码运行速度非常慢_C++_Objective C_Performance_Compiler Construction - Fatal编程技术网

C++ C++;在以Objective-c为主的项目中,代码运行速度非常慢

C++ C++;在以Objective-c为主的项目中,代码运行速度非常慢,c++,objective-c,performance,compiler-construction,C++,Objective C,Performance,Compiler Construction,我被要求在一个项目中添加一种奇特的图像格式。客户端只提供C++库。一旦在一个以Objective-C为主的项目(也就是说,一个所有其他代码都在Objective-C中的项目)中编译,该库的工作速度非常慢 我把性能与C++和Mac上的C++实现、一个端口C实现到PC上的性能进行了比较,它们都是在彼此相似的计算机上进行的。缓慢的性能仅在Objective-C项目中存在,在设备上比在模拟器上更为明显。我希望该设备(iPad)的CPU少于mac/pc,但不会从模拟器中的0.2秒图像解析到设备上惊人的2.

我被要求在一个项目中添加一种奇特的图像格式。客户端只提供C++库。一旦在一个以Objective-C为主的项目(也就是说,一个所有其他代码都在Objective-C中的项目)中编译,该库的工作速度非常慢

我把性能与C++和Mac上的C++实现、一个端口C实现到PC上的性能进行了比较,它们都是在彼此相似的计算机上进行的。缓慢的性能仅在Objective-C项目中存在,在设备上比在模拟器上更为明显。我希望该设备(iPad)的CPU少于mac/pc,但不会从模拟器中的0.2秒图像解析到设备上惊人的2.4秒图像解析! <强>所有Objy-C项目中添加的C++代码执行得如此慢吗?< /强>

调整了所有编译器类型,许多编译器首选项。另外,实现C++代码的时间剖析在琐碎的动作上花费了大量的时间(简单的指令,如++和+=的)。 <> P>我应该如何处理这个问题,以便在ObjyE-C项目?

中使C++库的性能达到合理的水平?

我在MAC和PC上与C++实现的性能进行了比较, pc机上的移植C#实现——都在类似的计算机和CPU上 记忆方面。缓慢的性能仅在Objective-C项目中, 在设备上比在模拟器上更明显

iOS设备考虑到它们的大小和电池限制,相对而言是强大的,但它们与现代的MAC或PC没有匹配。当与模拟器相比,在设备上运行时,您会发现任何代码、C++或其他方面的显著减速。当你说你测试的“都是在相似的电脑上”时,你的意思是彼此相似还是类似于iPhone 4


我不知道使用C++和Objto-C有什么特别的性能损失。你可以通过想出一些非常简单的基准来测试自己,在C++和Objto-C中编码它,并比较执行时间。没有所谓的“Objective-C项目”。单个文件可以是C++或Objtovi-C或C或其他东西。每个文件都是根据项目设置编译的,与项目中的其他文件无关。所以,这里还有别的事情。你是说你把代码从C++移植到Objto-C,而移植的代码慢了吗?我没有把代码移植到Objtovi-C,只是在一个常规的IOS项目中嵌入了CPP,所有的文件都写在目标Cas中,你有C++源,为什么不使用剖析器来检查什么东西会使所有的东西都慢下来?也许可以对iPhone/iPad/iPod进行优化,使其性能更好?您是否验证了“琐碎”的操作确实是琐碎的?在C++中, ++ > /COD>和 > += 不一定是微不足道的,因为它们可以被重载来执行任意代码,我相信它们在显示结果中显示出来的唯一方法是它们是否过载。特别是,对于任何类型的集合, += 通常都会分配内存。我已经按照代码建议了时间-一个同事正在帮助优化C++代码。时间分析器显示了图像解析子函数中最重要的操作,基本上是将外来图像格式中的像素“解码”为bmp bytearray,因此它主要是简单的算法,一些钳制,一些写入预先分配的缓冲区。我已经验证了+=和++没有重载。在性能上提高了25%,但是iPad上的1.4秒每一个IMG都是不可接受的,当模拟器上它给出0.1秒……使用C++静态/动态链接会有很大的变化吗?