Este es el nuevo artículod e neustro creador de contenido.. aunque a ver si me pongo a traducirlo, de momento los que sepan inglés pueden echarle un vistazo
https://medium.com/aelfblockchain/the-revolution-that-is-called-aelf-parallel-processing-61db75cc068a---------
Test de comparación en rendimiento: AELF vs Ethereum
El rendimiento de aelf en la ejecución de contratos inteligentes es miles de veces más veloz que el mostrado por Ethereum
1. Código y caso del test
2. Configuración de la máquina
3. Resultados del test
3.1 EVM
3.2 AELF
3.2.1 LoopDivAdd10M
3.2.2 LoopExpNop1M
Mientras el desarrollo de la red aelf continua hacia su madurez, se ejecutan varios tipos de test bajo presión para probar el rendimiento de la red en distintos aspectos.
Una de las tests más recientes para comprobar la naturaleza avanzada de la tecnología fundamental que subyace a aelf, fue comparar el rendimiento de Ethereum y aelf en un entorno idéntico.
Los resultados fueron sorprendentes. La eficiencia de la ejecución de contratos de aelf resultó ser notablemente superior a la de la EVM de Ethereum, superando a Ethereum no solo en cientos, sino en miles, de veces su velocidad de procesamiento. Ethereum utiliza su módulo EVM para soportar la ejecución de contratos, mientras que su stack es de 256 bits y la cantidad de gas contribuye sustancialmente al rendimiento general. En cambio, aelf llama al contrato a partir de reflexión de C#, lo que permite prescindir de muchas ejecuciones innecesarias.
1. Código y caso de test
La test se llevó a cabo utilizando Ethereum loop-DivAdd-10M.json y loop-exp-nop-1M.json.
ETH: Basado en la versión oficial de implementación
https://github.com/ethereum/go-ethereumAELF: Basado en la versión oficial de implementación de C#
https://github.com/AElfProject/AElfCaso de prueba, test estándar para ETH:
https://github.com/ethereum/tests/tree/develop/src/VMTestsFillerPrograma del test correspondiente de aelf program:
https://github.com/AElfProject/AElf/blob/dev/bench/AElf.Benchmark2. Configuración de la máquina
Entorno de prueba:
OS=ubuntu 16.04
QEMU Virtual CPU, 2 CPU, 2 logical and 2 physical cores
CPU MHz: 2194.916; cache size : 16384 KB
Entorno de prueba de aelf:
BenchmarkDotNet=v0.11.5
.NET Core SDK=2.2.203
[Host] : .NET Core 2.2.4 (CoreCLR 4.6.27521.02, CoreFX 4.6.27521.01), 64bit RyuJIT DEBUG
3. Resultados del test
LoopDivAdd10M: La EVM tarda 169 veces más que el aelf
LoopExpNop1M: EVM tarda 1223 veces más que aelf
3.1 EVM
La versión oficial de implementación de la ejecución del programa de prueba integrado, es la mostrada a continuación.
LoopDivAdd10M:14.236813572s
LoopExpNop1M: 639.16568ms
3.2 AELF
LoopDivAdd10M: 84.01ms
LoopExpNop1M: 0.5225ms
3.2.1 LoopDivAdd10M
Ciclo de división/agregación 10 millones de veces
Método:
public override DoubleValue LoopDivAdd(DivAddTestInput input)
{
var r = input.X;
for (uint i = 0; i < input.N; i++)
{
r /= input.Y;
r += input.K;
}
Entrada:
new DivAddTestInput()
{
X = 100,
Y = 300,
K = 500,
N = 10000000
}
Resultado
3.2.2 LoopExpNop1M
Método:
public override Int32Value LoopExpNop(PerformanceTesteInput input)
{
for (uint i = 0; i < input.N; i++)
{
}
return new Int32Value {Value = input.Seed};
}
Entrada:
new PerformanceTesteInput()
{
Exponent = 0,
Seed = _executeResult,
N = 1000000
}
Resultado:
En el caso de una máquina con la misma configuración para la prueba, para una prueba de 10 millones de ciclos de agregación y división, aelf sólo necesita 84.01ms, 169 veces mas veloz que Ethereum EVM; para 1 millón de bucles vacíos, aelf sólo necesita 0.5225 ms, lo cual es 1223 veces mas veloz que Ethereum EVM.
Cuando acababamos de obtener el resultado de 500us, también nos quedamos sorprendido, ya que tomó 5ms la ejecución de este programa de test previamente. Pensamos que se debía a esta versión, la optimización de este código de bucle vacío. Sin embargo, tras su descompilación, la lógica correspondiente sigue presente, y los datos no muestran signos de problema alguno.