我有一个带有Angular的Ionic3应用程序,我知道它不是像纯Android或Swift这样的本机应用程序。但是性能却很差。我只有一个空白项目,但是如果启动它,我将得到1-2秒的黑屏和5-8秒的启动/白屏。
我试图向页面和组件添加延迟加载,但这也很糟糕。如果单击选项卡,它将冻结1秒钟,直到打开延迟加载的页面。
这正常吗?我可以减少加载时间吗?
答案 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" />