Поэтому мне было поручено ведущим инженером (я перефразировал его немного): < /p>
создал новый проект с Dagger, а затем Dagger Genea Legnaine для. 300, 1000.
. Оценивая время компиляции, мы можем определить взаимосвязь между ними, будь то линейно или нет, как быстро оно растет. Но мне все еще нужно выяснить, как кинжал влияет на время компиляции. < /P>
Я думаю, что это в первую очередь зависит от количества исходных файлов, а не от количества интерфейсов кинжала. Я предполагаю, что это дорогостоящее сканирование, а не само поколение. Но мне нужны данные.
Я написал два сценария Bat . Первый создает N -файлы, такие как classn.java , измерение пакета MVN на каждую итерацию. Он работает, как и ожидалось.
Код: Выделить всё
REM java_class_generation.bat
@echo off
setlocal
REM Set the source directory
set SOURCE_DIR=src\main\java
REM Check if the directory exists
if not exist "%SOURCE_DIR%" (
echo Source directory does not exist: %SOURCE_DIR%
exit /b 1
)
REM Create the measurements file if it doesn't exist
if not exist measurements.txt (
echo Creating measurements.txt file.
echo. > measurements.txt
echo Created measurements.txt file.
)
REM Loop to create files and measure time
for /l %%i in (1, 1, 10) do (
REM Create the Java file
setlocal enabledelayedexpansion
set "CLASS_DIR=%SOURCE_DIR%\com\example\dagger_generation\Class%%i.java"
echo package com.example.dagger_generation; > !CLASS_DIR!
echo public class Class%%i {} >> !CLASS_DIR!
echo Created Class%%i
echo Running mvn package...
REM Measure the time for mvn package
for /f "delims=" %%a in ('powershell -command "Measure-Command { mvn package }"') do (
set "result=%%a"
echo !result: = ! >> measurements.txt
)
echo mvn package complete
echo. >> measurements.txt
endlocal
)
echo Done creating files and measuring time.
Код: Выделить всё
import com.example.dagger_generation.Class1;
@dagger.Module
public class Class1Module {
@dagger.Provides
public Class1 class1() {
return new Class1();
}
}
< /code>
import com.example.dagger_generation.Class1;
@dagger.Component(modules=Class1Module.class)
public class Class1Component {
Class1 getClass1();
}
< /code>
REM dagger_interface_generation.bat
@echo off
setlocal
REM Set the source directory
set SOURCE_DIR=src\main\java
REM Check if the directory exists
if not exist "%SOURCE_DIR%" (
echo Source directory does not exist: %SOURCE_DIR%
exit /b 1
)
REM Create the dagger_measurements.txt file if it doesn't exist
if not exist dagger_measurements.txt (
echo Creating dagger_measurements.txt file.
echo. > dagger_measurements.txt
echo Created dagger_measurements.txt file.
)
REM Loop to create files and measure time
for /l %%i in (1, 1, 10) do (
setlocal enabledelayedexpansion
REM Create the @Module file
set "MODULE_FILE=%SOURCE_DIR%\di\Class%%iModule.java"
echo import com.example.dagger_generation.Class%%i > !MODULE_FILE!;
echo @dagger.Module >> !MODULE_FILE!
echo public class Class%%iModule { >> !MODULE_FILE!
echo @dagger.Provides >> !MODULE_FILE!
echo public Class%%i class%%i() { >> !MODULE_FILE!
echo return new Class%%i(); >> !MODULE_FILE!
echo } >> !MODULE_FILE!
echo } >> !MODULE_FILE!
echo Created Class%%iModule.java
REM Create the @Component file
set "COMPONENT_FILE=%SOURCE_DIR%\di\Class%%iComponent.java"
echo import com.example.dagger_generation.Class%%i > !COMPONENT_FILE!;
echo @dagger.Component(modules = Class%%iModule.class) >> !COMPONENT_FILE!
echo public interface Class%%iComponent { >> !COMPONENT_FILE!
echo Class%%i getClass%%i(); >> !COMPONENT_FILE!
echo } >> !COMPONENT_FILE!
echo Created Class%%iComponent.java
echo Running mvn package...
REM Measure the time for mvn package
for /f "delims=" %%a in ('powershell -command "Measure-Command { mvn package }"') do (
set "result=%%a"
echo !result: = ! >> dagger_measurements.txt
)
echo mvn package complete
echo. >> dagger_measurements.txt
endlocal
)
echo Done creating Dagger interfaces and measuring time.
< /code>
Однако второй скрипт не сбои: < /p>
Непредвиденное появление: {.
< /code>
, который, я думаю, является локализованным эквивалентом: < /p>
{ was unexpected at this time
< /code>
Вот дерево каталогов: < /p>
|___src
| |___main
| |___java
| |___com
| |___example
| |___dagger_generation
| |___di
|___java_class_generation.bat
|___dagger_interface_generation.bat
|___pom.xml
Код: Выделить всё
4.0.0
com.example.dagger-profiling
DaggerPorfiling
SNAPSHOT
1.8
1.8
UTF-8
2.51.1
org.apache.maven.plugins
maven-compiler-plugin
true
com.google.dagger
dagger-compiler
${dagger.ver}
com.google.dagger
dagger
${dagger.ver}
com.google.dagger
dagger-compiler
${dagger.ver}
provided
Подробнее здесь: https://stackoverflow.com/questions/795 ... build-time