-
Notifications
You must be signed in to change notification settings - Fork 489
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Block-STM code implementation #1329
Comments
I believe that if the statedb is large, such copying could lead to significant performance overhead. Can parallel execution really compensate for this overhead and surpass serial execution? Also, I don't quite understand why copying is necessary in this case. I look forward to your response. |
I believe that the time calculated by end - start includes the time spent on copying, and not just the actual execution time. Is that correct? |
This is to prevent a task from modifying the state from another.
Copying happens in memory, it is insignificant compared to other operations, such as loading data from database.
Yes, it includes the time of copying. |
I am currently trying to port the block-stm implementation to the EVM. After syncing Ethereum's data and executing its transactions, I noticed that parallel execution is not faster than serial execution. Could you please share some insights into potential reasons for this based on the implementation? Thank you very much! |
This issue is stale because it has been open 14 days with no activity. Remove stale label or comment or this will be closed in 14 days. |
This issue was closed because it has been stalled for 28 days with no activity. |
func (task *ExecutionTask) Execute(mvh *blockstm.MVHashMap, incarnation int) (err error) {
task.statedb = task.cleanStateDB.Copy()
task.statedb.SetTxContext(task.tx.Hash(), task.index)
....
}
I would like to understand why each execution requires "task.statedb = task.cleanStateDB.Copy()." Is it to ensure determinism?"
The text was updated successfully, but these errors were encountered: