Ionic App性能不佳且运行缓慢

时间:2018-07-12 09:29:39

标签: angular ionic-framework

我有一个带有Angular的Ionic3应用程序,我知道它不是像纯Android或Swift这样的本机应用程序。但是性能却很差。我只有一个空白项目,但是如果启动它,我将得到1-2秒的黑屏和5-8秒的启动/白屏。

我试图向页面和组件添加延迟加载,但这也很糟糕。如果单击选项卡,它将冻结1秒钟,直到打开延迟加载的页面。

这正常吗?我可以减少加载时间吗?

2 个答案:

答案 0 :(得分:0)

首先,使用Ionic v4的启动时间将会/应该会更好,因为它们将使用Web组件

第二,关于构建时间,如果要改善构建时间,首先要做的是使用--prod执行构建,以告诉ionic-app-scripts应用方法(如缩小) )添加到您的代码中,以减小捆绑包的大小(较小的捆绑包大小=更快的启动速度)

ionic cordova build ios/android --prod

您还应该检查config.xml,以查看Cordova初始屏幕的参数是什么。确保您没有设置很长的延迟,这会给您一种感觉,使该应用需要花一些时间才能启动,而实际上该应用是在初始屏幕后加载的。

最后,在您这边也有工作要做,因为像我上面说的那样,捆的大小很重要。但这也与字体,图像等有关。例如,您可以检查代码以找出真正使用的内容,还可以遍历库以确保仅包含所需的内容(例如,如果使用rxjs,则仅导入可出租的运算符,而不是全部lib)。如果有兴趣的话,我在Ionic论坛上关于该主题https://forum.ionicframework.com/t/app-boot-time-current-state-and-best-practices

的那篇文章中整理了一些意见

p.s .: Ionic v3性能良好,并且启动时间可以接受/良好。我的应用程序是大约。 40页,60个组件,过多的插件等。在iPhone 6s上2.5秒即可启动

答案 1 :(得分:0)

您的偏好设置也可能有问题。请尝试按以下步骤在配置中更改它们。

import numpy as np

import pandas as pd

from sklearn.model_selection import ShuffleSplit

%matplotlib inline

df = pd.read_csv('.......csv')
df.drop(['Company'], 1, inplace=True)

x = pd.DataFrame(df.drop(['R&D Expense'],1))
y = pd.DataFrame(df['R&D Expense'])

X_test = x.index[[0,1]]
y_test = y.index[[0,1]]

X_train = x.drop(x.index[[0,1]])
y_train = y.drop(y.index[[0,1]])

from sklearn.metrics import r2_score
def performance_metric(y_true, y_predict):
    score = r2_score(y_true, y_predict)
    return score

from sklearn.metrics import make_scorer
from sklearn.neighbors import KNeighborsRegressor
from sklearn.model_selection import GridSearchCV

def fit_model_shuffle(x, y):

  cv_sets = ShuffleSplit(n_splits = 10, test_size = 0.20, random_state = 0)

  regressor = KNeighborsRegressor()
    params = {'n_neighbors':range(3,10)}

       scoring_fnc = make_scorer(performance_metric)
     grid = GridSearchCV(regressor, param_grid=params,scoring=scoring_fnc,cv=cv_sets)
    grid = grid.fit(x, y)
    return grid.best_estimator_

reg = fit_model_shuffle(X_train, y_train)

> for i, y_predict in enumerate(reg.predict(X_test),1):
    print(i, y_predict)

在app.component.ts

<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="3000" />