Искусство: проверка X принимала Y мс

У меня есть предупреждение в моем logcat:

W/art: Verification of void com.myapp.LoginFragment$override.lambda$logIn$5(com.myapp.LoginFragment, java.lang.Throwable) took 217.578ms 

Вот код:

 subscription = viewModel.logIn() .observeOn(AndroidSchedulers.mainThread()) .subscribe( this::showStudioSelection, error -> { ErrorResponse errorResponse = ErrorResponseFactory.create(error); if (errorResponse.code() == ApiResult.BAD_REQUEST) { Snackbar.make(getView(), R.string.login_bad_credentials, Snackbar.LENGTH_LONG) .setAction(android.R.string.ok, v -> {}) .show(); } else { Snackbar.make(getView(), "Unknown error " + errorResponse.code(), Snackbar.LENGTH_LONG) .setAction(android.R.string.ok, v -> {}) .show(); } viewModel.updateLoginButtonState(); } ); 

220ms довольно много (и я чувствую, что замечаю отставание при запуске этого фрагмента).

Я использую RxJava и retrolambda, но это не единственное место, где появляется это сообщение, поэтому я не думаю, что это напрямую связано.

Как я могу повлиять на время проверки? Это даже стоит?

Похоже, что это имеет какое-то отношение к циклической сложности, так как я мог избавиться от waring, удалив вызовы Snackbar.make в if с еще более сухим кодом:

 String errorMessage; if (errorResponse.code() == ApiResult.BAD_REQUEST) { errorMessage = getString(R.string.login_bad_credentials); } else { errorMessage = "Unknown error " + errorResponse.code(); } 

Похоже, что это часть требования «обратной совместимости» для новой среды выполнения ART . То есть приложения, созданные против DALVIK должны иметь возможность запускать и ART .

Если вы запустите DVM приложение в системе ART, вы увидите это сообщение при первом dex2oat когда dex2oat преобразует приложение. Если вы создадите приложение, ориентированное на ART , приложение больше не сможет работать на DVM , но преобразование OAT произойдет во время установки и не будет отображаться во время выполнения.

Источник: Art of Art отмечает, что это часть третья части исследования ART, и вам, возможно, придется проверять детали два и три