我正在使用以下命令在OSX上从命令行编译我的(相当简单,只有5个文件和几百个LOC)应用程序:
ant debug
有用.但它运作缓慢:
BUILD SUCCESSFUL
Total time:
26 seconds
这是为什么?即使我只更改一个java文件中的一行,也需要很长时间.大部分时间都花在dex舞台上(约20秒),这是AFAIK创建Dalvik字节码.但我的朋友也使用Eclipse在Windows上使用相同的项目,他说编译只需要一两秒钟就可以在他的机器上运行.有什么办法可以加快这个过程吗?
我有一个使用FMOD库在C++/SDL中编写的应用程序.该应用程序是可移植的,无需在Mac和Linux上进行任何代码更改即可编译.但令人烦恼的是,当我想发布Linux版本时,我必须运行我的Linux机器,在那里复制源代码(通过USB驱动器,因为我没有网络,它是一台旧笔记本电脑)并编译它,然后复制它再次通过USB连接到我的Mac并上传它.
我的问题是 - 有更好的方法吗?理想情况下,我是否可以直接从Xcode编译应用程序在Linux上运行,我在那里为Mac编译它?
我已经花了几个小时在那一个,我似乎无法找到解决方案.首先,我有一些规格:
我有一个Team实体模型.在应用程序中,有一个Team List视图控制器,它从后端加载团队.后端返回JSON数组,其中包含团队ID.我将此ID存储在我的模型中的"id"字段中,并在迭代服务器响应时,查找给定ID的团队是否已存在.如果是这样,我只更新其信息并传递对象,如果没有 - 我先创建它.
这就是它变得离奇的地方.这有效90%的时间.我可以加载Team List控制器,在应用程序中更进一步,返回控制器(再次加载数据),大部分时间一切正常.然而,偶尔,我的获取请求将不会返回任何内容.如:
NSArray *results = [context executeFetchRequest:request error:&error];
Run Code Online (Sandbox Code Playgroud)
将返回空数组,错误也是空的.服务器上的任何内容都不会发生变化.当我尝试调试它时,请求如下所示:
<NSFetchRequest: 0x127a0e20> (entity: Team; predicate: (id == "123"); sortDescriptors: ((null)); limit: 1; type: NSManagedObjectResultType; )
Run Code Online (Sandbox Code Playgroud)
当我在外部应用程序中预览sqlite存储时,我可以看到此ID的Team项目存在,而在其他90%的时间内它确实被加载.什么更奇怪,当我转向SQLDebug时,我可以看到:
2013-04-12 12:00:27.934 SportLink[10831:c07] CoreData: annotation: fetch using
NSSQLiteStatement <0x12656d10> on entity 'Team' with sql text 'SELECT 0, t0.Z_PK,
t0.Z_OPT, t0.ZACI1, t0.ZACI2, t0.ZACI3, t0.ZALTFIRSTNAME, t0.ZALTSECONDNAME, t0.ZCOLOR1,
t0.ZCOLOR2, t0.ZGENDER, t0.ZICON, t0.ZID, t0.ZLOCATION, t0.ZLOGO1, t0.ZLOGO2, t0.ZNAME,
t0.ZTYPE, t0.ZSPORT FROM ZTEAM t0 WHERE t0.ZID = ? LIMIT 133' …Run Code Online (Sandbox Code Playgroud) 我不久前写了一个程序(Mac OS X,C++,SDL,FMOD),它表现得相当不错.但最近我想扩展其功能并为其添加更多代码.现在,当我运行它并尝试测试新功能时,程序会与SIGABRT崩溃.
查看调试器,在函数堆栈上我看到:
据我所知,"__ stack_chk_fail"表示堆栈溢出.但这不是最奇怪的事情.在这个函数"odtworz"中,我有一些像这样的代码:
...
koniec = 0;
while ( koniec == 0 ) {
...
if (mode == 1) {
...
}
else if (mode == 2) {
...
}
else if (mode == 3) {
piesniOrkiestrowe[0] = '\0';
while ( piesniOrkiestrowe[0] == '\0' ) {
losowaPiesn();
char * piesnOrkiestrowa = szukajPiesniOrkiestrowej();
if ( piesnOrkiestrowa != NULL )
strcpy(piesniOrkiestrowe, piesnOrkiestrowa);
}
char nowyPiesnPlik[25];
sprintf(nowyPiesnPlik, "%sorch/%s", PIESNI_DIR.c_str(), piesniOrkiestrowe); …Run Code Online (Sandbox Code Playgroud) 我正在为 Linux 编写一个 SDL 应用程序,它可以从控制台(没有 X 服务器)运行。我的一个功能是文件复制机制,它将特定文件从 HDD 复制到 USB 闪存设备,并在 UI 中显示此复制的进度。为此,我使用简单的 while 循环并按 8kB 块复制文件以获取复制进度。问题是,它很慢。我在将近 10 分钟内复制了一个 100 MB 的文件,这是不可接受的。
如何实现更快的文件复制?我正在考虑一些异步 API,可以将文件从 HDD 读取到缓冲区并将数据存储到 USB 中的单独线程中,但我不知道是否应该自己实现这一点,因为它看起来不是一件容易的事。也许你知道一些 C++ API/库可以帮助我?或者也许其他一些更好的方法?
c++ ×3
macos ×2
performance ×2
activerecord ×1
android ×1
callstack ×1
compilation ×1
copy ×1
core-data ×1
dex ×1
file ×1
ios ×1
linux ×1
objective-c ×1
restkit ×1
sdl ×1
xcode ×1