Question: I was thinking more about the programming language i am designing. and i was wondering, what are ways i could minimize its compile time?

Answer: 
Here are some performance tricks that we've learned by measuring compilation speed and what affects it: 

* Write a two-pass compiler: characters to IR, IR to code. (It's easier to write a *three*-pass compiler that goes characters -> AST -> IR -> code, but it's not as fast.)
* As a corollary, don't have an optimizer; it's hard to write a fast optimizer.
* Consider generating bytecode instead of native machine code. The virtual machine for [Lua](http://www.lua.org/) is a good model.
* Try a linear-scan register allocator or the simple register allocator that Fraser and Hanson used in [lcc](http://www.cs.princeton.edu/software/lcc).
* In a simple compiler, lexical analysis is often the greatest performance bottleneck. If you are writing C or C++ code, use [re2c](http://re2c.org/). If you're using another language (which you will find much more pleasant), read the paper aboug re2c and apply the lessons learned.
* Generate code using maximal munch, or possibly [iburg](http://code.google.com/p/iburg/).
* Surprisingly, the GNU assembler is a bottleneck in many compilers. If you can generate binary directly, do so. Or check out the [New Jersey Machine-Code Toolkit](http://www.cs.tufts.edu/~nr/toolkit/).
* As noted above, design your language to avoid anything like `#include`. Either use no interface files or precompile your interface files. This tactic dramatically reduces the burdern on the lexer, which as I said is often the biggest bottleneck.
it depends on what language/platform you're programming for. for .NET development, minimise the number of projects that you have in your solution.