很難確定慢慢來自何處,或者周圍有什麼方法,但是馬上就會發生錯誤。
您不應該將.c文件重命名爲.h文件並將其包含在內。你應該已經編寫了有函數,變量和類型聲明宣佈的.h(頭)文件:
myprog.h:
#ifndef MYPROG_H_
#define MYPROG_H_
struct thing {
int a;
int b;
};
extern int woof;
int foo(void * buf, int size);
#endif /* MYPROG_H_ */
那麼你應該編譯.c文件到目標文件(或庫),並將主程序與該程序鏈接起來。如果您將.h文件實際上只是一個重命名的.c文件包含到多個源代碼文件中,則可能導致程序中有多個版本的數據和代碼。
您可能還想通過並分離myprog.c中的任何代碼,而這些代碼不會在iPhone程序中使用。我敢打賭,有很多。
至於爲什麼程序放緩,這可能與編寫myprog有關,以利用iPhone上不可用的一些資源。首先想到的就是大量的RAM,因爲許多桌面應用程序都是像可用RAM一樣寫入的,我可以看到如何用這種方式編寫一些.jpg操作代碼。解決這個問題的方法是嘗試重寫算法,以便在處理該算法時不會一次加載多少圖片。
第二件事就是浮點代碼。浮點操作在圖像處理代碼中很常見,但通常在嵌入式系統中不可用或者受到嚴格限制。就iPhone而言,它們是可用的,但根據我聽到的情況,如果您將代碼編譯爲拇指而非常規ARM代碼,則其性能明顯受到阻礙。 (我從來沒有開發iPhone或其特定的處理器,所以我不知道,但值得研究)。
另一個地方,事情可能會放緩,如果有某種目標C對象和C結構之間的轉換,你已經以某種方式引入的,往往比它應該需要發生很多會。由於這個原因,可能會發生其他緩慢的情況,但是您可以通過爲您的桌面創建一個客觀的C程序來測試該理論,該程序使用myprog.c
代碼的方式類似於iPhone程序的使用方式。
你可能應該考慮的另一件事是分析你的iPhone程序。分析確定(或僅有助於確定某些情況下)程序花費時間的情況。知道這並不一定告訴你,運行最多的代碼是不好的,或者它的任何事情都可以改進,但它確實告訴你在哪裏尋找。有時你可能會看看結果,並立即知道你認爲在程序開始時只會調用一次的函數實際上被重複調用,這高度表明可以做出一些改進。
我敢肯定,一點搜索將會變成如何去做這件事。
在後臺線程中運行它並提供進度條?聽起來這只是一個處理器速度問題。 – 2010-10-19 19:58:22