Building too slow

#1

My project has some extensions, some of these has large framework or .a, or .jar, and I’m in china.
Every time when I build android,win32,ios, or mac bundle, It takes a long time to finish.
Is there a way to optimize this? For example,deploying a build server in my network.

0 Likes

#2

I’m an extension developer, I feel very painful for this.

0 Likes

#3

Try a VPN?

0 Likes

#4

I think VPN is not the final resolution, it cannot reach the speed of local build as long as building over network

0 Likes

#5

We’re looking at this as an option for the future. We will most likely be able to provide this solution sometime in June or July.

4 Likes

#6

OK,hope to see it soon.

0 Likes

#7

Oh boy oh boy oh boy.

2 Likes

#8

Currently, all files >50kb are cached by the server. So that’s already supported. Once the build is uploaded, it takes a couple of seconds to compile each .cpp file (usually ~2 seconds per file). It’s single threaded though, so if you have tons of files it might increase?

Not sure what actually takes time apart from that…

1 Like

#9

Right now, My project have 85 of *.c and *.cpp, and 45 of *.mm, and may increase in the future

1 Like

#10

Wow! That was quite a bit!
Well, it’s supposed to work with that too, but I guess I’ll have to add a multithreading ticket to the NE server.

As for the building speeds, they can top out at ~1minute if there are a lot of files.
But I’m also thinking the actual internet speed is a hug factor. Here is a build from this morning that apparently took ~20min just to download 20mb. There’s no real fix for those circumstances though, so we’ll have to wait for the option @britzl mentioned.

In the meantime, one workaround (during development) could be to put your “library code” into a shared library, which you build locally, and instead load at runtime from the engine. That way the engine only needs to be built once, and you can update the shared library locally.

1 Like

#11

Does ios and mac support shared library?
In Win32, I can use LoadLibrary to dynamically load a dll
In Android, I can use dlopen to load a so
But if I do so, my code will become sophisticated and hard to maintain

1 Like

#12

So I think the best way is to setup a build server in my local network.

1 Like

#13

Yes, you use dlopen there too.
I’m not sure if iOS supports releaseing with shared libraries (perhaps now with iOS8+ support in the manifest?), but you can certainly load them from a development bundle (I’ve done it. They need to be signed ofc)

2 Likes