I have an app where you enter in an origin and a destination within the US, and it tells you what the weather will be like at various points on the route. However, the app is too slow. A profiling of the app does not show any slowdowns within my code; here's my call stack from one of the highest time-consuming points:
46 25231.0 RouteWeather (3000) :0
45 13746.0 Main Thread 0x186c89 :0
44 libdyld.dylib 13640.0 start
43 RouteWeather 13640.0 main /Users/montana/Desktop/RouteWeather/RouteWeather/AppDelegate.swift:12
42 UIKitCore 13640.0 UIApplicationMain
41 GraphicsServices 13620.0 GSEventRunModal
40 CoreFoundation 13620.0 CFRunLoopRunSpecific
39 CoreFoundation 13620.0 __CFRunLoopRun
38 CoreFoundation 11005.0 __CFRunLoopDoSource1
37 CoreFoundation 11005.0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__
36 CoreFoundation 11005.0 __CFMachPortPerform
35 QuartzCore 11005.0 display_timer_callback(__CFMachPort*, void*, long, void*)
34 QuartzCore 11004.0 CA:isplay:isplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long)
33 VectorKit 10992.0 -[_GGLDisplayLinkTarget displayLinkFired:]
32 VectorKit 10992.0 ggl:isplayLink:nTimerFired(double)
31 VectorKit 10992.0 md::MapEngine:nRenderTimerFired(double)
30 VectorKit 10992.0 md::MapEngine::renderScene(double, std::__1::function<void ()>)
29 VectorKit 10992.0 -[GGLOpenGLESLayer onTimerFired:]
28 VectorKit 10992.0 ggl::OESContext:erformWhileBound(std::__1::function<void ()> const&)
27 VectorKit 10991.0 std::__1::__function::__func<-[GGLOpenGLESLayer onTimerFired:]::$_1, std::__1::allocator<-[GGLOpenGLESLayer onTimerFired:]::$_1>, void ()>:perator()()
26 VectorKit 10810.0 -[MDDisplayLayer drawToTexture:withRenderQueue:completionHandler:]
25 VectorKit 10810.0 ggl::RenderFrame::execute(ggl::RenderTarget*, ggl::RenderQueue*, std::__1::function<void ()>, std::__1::function<void ()>)
24 VectorKit 10810.0 ggl::GLRenderer::frame(ggl::RenderTarget*, ggl::RenderQueue*, std::__1::function<void ()>, std::__1::function<void ()>)
23 VectorKit 10810.0 geo::TaskQueue::sync_b(void () block_pointer)
22 VectorKit 10810.0 geo::TaskQueue::sync(std::__1::function<void ()>)
21 libdispatch.dylib 10810.0 _dispatch_async_and_wait_f
20 libdispatch.dylib 10810.0 _dispatch_async_and_wait_invoke_and_complete_recurse
19 libdispatch.dylib 10810.0 _dispatch_client_callout
18 VectorKit 10810.0 invocation function for block in geo::TaskQueue::sync(std::__1::function<void ()>)
17 VectorKit 10810.0 invocation function for block in ggl::GLRenderer::frame(ggl::RenderTarget*, ggl::RenderQueue*, std::__1::function<void ()>, std::__1::function<void ()>)
16 VectorKit 10810.0 ggl::OESContext:erformWhileBound(std::__1::function<void ()> const&)
15 VectorKit 10810.0 _ZNSt3__110__function6__funcIZZN3ggl10GLRenderer5frameEPNS2_12RenderTargetEPNS2_11RenderQueueENS_8functionIFvvEEESA_EUb_E3$_3NS_9allocatorISB_EES9_EclEv
14 VectorKit 10810.0 ggl::GLRenderer::_processQueue(ggl::RenderTarget*, ggl::RenderQueue*)
13 VectorKit 10810.0 ggl::GLRenderer::_processQueue(ggl::RenderTarget*, ggl::RenderQueue*)
12 VectorKit 10808.0 std::__1::__function::__func<ggl::GLRenderer::_processQueue(ggl::RenderTarget*, ggl::RenderQueue*)::$_1, std::__1::allocator<ggl::GLRenderer::_processQueue(ggl::RenderTarget*, ggl::RenderQueue*)::$_1>, void ()>:perator()()
11 VectorKit 10748.0 ggl::GLCoreContext::submitRenderItem(ggl::RenderItem const*)
10 GLEngine 9623.0 glDrawElements_IMM_ES2Exec
9 GLEngine 8779.0 gleFlushAtomicFunc
8 3600.0 0x10c909f7c
7 GLRendererFloat 3599.0 gldRenderFillTriangles
6 1203.0 0x10c90ce79
5 GLRendererFloat 1203.0 gldMergeScanlines2x2
4 GLRendererFloat 562.0 gldLLVMFPTransform2x2
3 libGLProgrammability.dylib 543.0 glvmInterpretFPTransformFour
2 libGLProgrammability.dylib 466.0 glvmInterpretFPTransformFourInner
1 libGLProgrammability.dylib 180.0 glvmSamplerSample
0 libGLProgrammability.dylib 64.0 glvmSamplerLoadTexels
Can I please get some insight? Thanks.
46 25231.0 RouteWeather (3000) :0
45 13746.0 Main Thread 0x186c89 :0
44 libdyld.dylib 13640.0 start
43 RouteWeather 13640.0 main /Users/montana/Desktop/RouteWeather/RouteWeather/AppDelegate.swift:12
42 UIKitCore 13640.0 UIApplicationMain
41 GraphicsServices 13620.0 GSEventRunModal
40 CoreFoundation 13620.0 CFRunLoopRunSpecific
39 CoreFoundation 13620.0 __CFRunLoopRun
38 CoreFoundation 11005.0 __CFRunLoopDoSource1
37 CoreFoundation 11005.0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__
36 CoreFoundation 11005.0 __CFMachPortPerform
35 QuartzCore 11005.0 display_timer_callback(__CFMachPort*, void*, long, void*)
34 QuartzCore 11004.0 CA:isplay:isplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long)
33 VectorKit 10992.0 -[_GGLDisplayLinkTarget displayLinkFired:]
32 VectorKit 10992.0 ggl:isplayLink:nTimerFired(double)
31 VectorKit 10992.0 md::MapEngine:nRenderTimerFired(double)
30 VectorKit 10992.0 md::MapEngine::renderScene(double, std::__1::function<void ()>)
29 VectorKit 10992.0 -[GGLOpenGLESLayer onTimerFired:]
28 VectorKit 10992.0 ggl::OESContext:erformWhileBound(std::__1::function<void ()> const&)
27 VectorKit 10991.0 std::__1::__function::__func<-[GGLOpenGLESLayer onTimerFired:]::$_1, std::__1::allocator<-[GGLOpenGLESLayer onTimerFired:]::$_1>, void ()>:perator()()
26 VectorKit 10810.0 -[MDDisplayLayer drawToTexture:withRenderQueue:completionHandler:]
25 VectorKit 10810.0 ggl::RenderFrame::execute(ggl::RenderTarget*, ggl::RenderQueue*, std::__1::function<void ()>, std::__1::function<void ()>)
24 VectorKit 10810.0 ggl::GLRenderer::frame(ggl::RenderTarget*, ggl::RenderQueue*, std::__1::function<void ()>, std::__1::function<void ()>)
23 VectorKit 10810.0 geo::TaskQueue::sync_b(void () block_pointer)
22 VectorKit 10810.0 geo::TaskQueue::sync(std::__1::function<void ()>)
21 libdispatch.dylib 10810.0 _dispatch_async_and_wait_f
20 libdispatch.dylib 10810.0 _dispatch_async_and_wait_invoke_and_complete_recurse
19 libdispatch.dylib 10810.0 _dispatch_client_callout
18 VectorKit 10810.0 invocation function for block in geo::TaskQueue::sync(std::__1::function<void ()>)
17 VectorKit 10810.0 invocation function for block in ggl::GLRenderer::frame(ggl::RenderTarget*, ggl::RenderQueue*, std::__1::function<void ()>, std::__1::function<void ()>)
16 VectorKit 10810.0 ggl::OESContext:erformWhileBound(std::__1::function<void ()> const&)
15 VectorKit 10810.0 _ZNSt3__110__function6__funcIZZN3ggl10GLRenderer5frameEPNS2_12RenderTargetEPNS2_11RenderQueueENS_8functionIFvvEEESA_EUb_E3$_3NS_9allocatorISB_EES9_EclEv
14 VectorKit 10810.0 ggl::GLRenderer::_processQueue(ggl::RenderTarget*, ggl::RenderQueue*)
13 VectorKit 10810.0 ggl::GLRenderer::_processQueue(ggl::RenderTarget*, ggl::RenderQueue*)
12 VectorKit 10808.0 std::__1::__function::__func<ggl::GLRenderer::_processQueue(ggl::RenderTarget*, ggl::RenderQueue*)::$_1, std::__1::allocator<ggl::GLRenderer::_processQueue(ggl::RenderTarget*, ggl::RenderQueue*)::$_1>, void ()>:perator()()
11 VectorKit 10748.0 ggl::GLCoreContext::submitRenderItem(ggl::RenderItem const*)
10 GLEngine 9623.0 glDrawElements_IMM_ES2Exec
9 GLEngine 8779.0 gleFlushAtomicFunc
8 3600.0 0x10c909f7c
7 GLRendererFloat 3599.0 gldRenderFillTriangles
6 1203.0 0x10c90ce79
5 GLRendererFloat 1203.0 gldMergeScanlines2x2
4 GLRendererFloat 562.0 gldLLVMFPTransform2x2
3 libGLProgrammability.dylib 543.0 glvmInterpretFPTransformFour
2 libGLProgrammability.dylib 466.0 glvmInterpretFPTransformFourInner
1 libGLProgrammability.dylib 180.0 glvmSamplerSample
0 libGLProgrammability.dylib 64.0 glvmSamplerLoadTexels
Can I please get some insight? Thanks.