Skip to content

Commit

Permalink
update general/build/smart-contracts/gas-optimization, regarding the …
Browse files Browse the repository at this point in the history
…issue#454 (#457)

* update general/build/smart-contracts/gas-optimization, regarding the issue #454

* add related solidity official document link
  • Loading branch information
jackleeio authored Mar 27, 2024
1 parent 83ec70b commit 1ffe270
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
---
displayed_sidebar: generalSidebar
sidebar_position: 1

---

# Constant vs Immutable

1. `constant`: Declares a constant that must be initialized at the time of declaration and cannot be altered thereafter.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
displayed_sidebar: generalSidebar
sidebar_position: 2
---
# Memory vs Calldata

1. `memory`: Typically used for function parameters and temporary variables within functions. Stored in memory and not persistent on the blockchain.

2. `calldata`: Similar to memory, stored in memory and not persistent on the blockchain. The key difference is that calldata variables are immutable and commonly used for function parameters.


Learn more:
[Data location and assignment behavior](https://docs.soliditylang.org/en/latest/types.html#data-location)

Below, we demonstrate how to write data using both `calldata` and `memory`

```solidity
contract CalldataAndMemory {
struct Confi {
uint16 age;
string name;
string wish;
}
Confi John;
Confi Jane;
function writeToJohn(Confi calldata JohnData) external {
John = JohnData;
}
function writeToJane(Confi memory JaneData) external {
Jane = JaneData;
}
}
```

Recommendations for gas optimization:

🌟 In practical situations, if it's possible to use calldata, it is recommended to use `calldata` instead of `memory`.


0 comments on commit 1ffe270

Please sign in to comment.