小编bar*_*j.n的帖子

在Xcode中使用Swift的编译时间非常长

我有三个iOS项目:

  • 第一个 - 使用Xcode 7.2.3编译的35k Swift LOC,Swift 2.1(或2.0?)
  • 第二个 - 使用Xcode 8.2.1编译的15k Swift LOC,Swift 2.3
  • 第三个 - 使用Xcode 8.2.1编译的15k Swift LOC,Swift 3.0

所有这些的编译时间都很糟糕(干净版本的编译时间超过10分钟),而且每个版本的开发都在慢慢爬行.

我已经尝试过了:

  • 运用 Whole Module Optimization
  • 更改C Dialect为编译器默认值
  • 分析项目的构建时间并优化瓶颈(一些用数组连接编译6-10s的方法,nil合并操作符等),削减了15秒 - 完全不明显的区别
  • HEADERMAP_USES_VFS = YES
  • 其他一些我现在不记得了

我正在开发一款带有SSD,8GB内存和2.6ghz i5的Mac mini 2014,如果这很重要的话.

任何人都知道可能导致这种情况的原因,现在该怎么办甚至是任何解决方法?从我在SO和其他地方阅读的内容来看,它似乎是一个未解决的编译器问题.

编辑:是的,我正在使用Cocoapods作为依赖项.我会尝试搬到迦太基看看会发生什么.

xcode ios swift

7
推荐指数
1
解决办法
1918
查看次数

试图理解 Linux 内核中的一段内联臂汇编

我试图了解这段内联汇编的作用,它是从 CDEFINE宏生成的:

#define DEFINE(sym, val) asm volatile("\n->" #sym " %0 " #val : : "i" (val))

#define offsetof(TYPE, MEMBER)  ((size_t)&((TYPE *)0)->MEMBER)
Run Code Online (Sandbox Code Playgroud)

它被用于在linux-imxsmc内核分支中进行 AArch64 调用。使用上述 C 宏定义值的地方

// arch/arm64/kernel/asm-offsets.c

int main(void)
{
    (...)
      DEFINE(ARM_SMCCC_RES_X0_OFFS,     offsetof(struct arm_smccc_res, a0));
      DEFINE(ARM_SMCCC_RES_X2_OFFS,     offsetof(struct arm_smccc_res, a2));
      DEFINE(ARM_SMCCC_QUIRK_ID_OFFS,   offsetof(struct arm_smccc_quirk, id));
      DEFINE(ARM_SMCCC_QUIRK_STATE_OFFS,    offsetof(struct arm_smccc_quirk, state));
    (...)
}
Run Code Online (Sandbox Code Playgroud)

后来,这些定义在汇编宏中使用,可在此处使用(或者至少看起来像这样):

// arch/arm64/kernel/smccc-call.S

    .macro SMCCC instr
    .cfi_startproc
    \instr  #0
    ldr x4, [sp]
    stp x0, x1, [x4, #ARM_SMCCC_RES_X0_OFFS]
    stp x2, x3, [x4, …
Run Code Online (Sandbox Code Playgroud)

c assembly gcc gnu-assembler arm64

5
推荐指数
1
解决办法
684
查看次数

标签 统计

arm64 ×1

assembly ×1

c ×1

gcc ×1

gnu-assembler ×1

ios ×1

swift ×1

xcode ×1