Comments (13)
Too large an array. See related issue: #402
from tengo.
OK,thx
from tengo.
This may not be the same problem as that one,I changed my code to the following way of writing and still reported the same error:
for i in range(0, 9) { //fmt.Println(list[i]) }
I traced the source code and found that the problem lies in the MakeInstruction() of 'the instructions. go' file.
In line 28, n:=uint16 (o), the actual value of o is 66114, which exceeds the maximum value of uint16 (65535).
Is there any way I can correct it?
from tengo.
aha, can you try a larger uint and see if that helps?
from tengo.
I changed the 4 Jump instructions from uint16 to uint32, and changed the 2 bytes to 4 bytes. They are now working properly
And thank you again for your reply
from tengo.
However, the execution efficiency is slightly lower than before. I used the for loop to execute i++
100 million times, which is about 200 milliseconds slower than before.
from tengo.
Do you have a measure of the relative slowdown?
from tengo.
func main() {
src := `
fmt:=import("fmt")
V_INTERNAL_F := func() {
index:=0;
for i:=0;i<100000000;i++{
index++
}
return index
}
V_RETURN := V_INTERNAL_F()
`
start := time.Now()
res, err := run(src)
if err != nil {
panic(err)
}
end := time.Since(start)
fmt.Println("cost:", end)
//println(res)
j_str, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Println(string(j_str))
}
from tengo.
I executed the above code 20 times using the pre modified code and the modified code, and took an average value for comparison
from tengo.
Sorry, to clarify, 200ms is a lot if your baseline was say 500ms, but negligible if it was say 10 seconds. What does the 200ms compare against?
from tengo.
The baseline is 7 to 8 seconds, and 200 milliseconds is the difference in code execution time before and after modification, shouldn't it be too much?
from tengo.
That’s a 2-3% difference. If it’s consistently repeatable we should try to improve it if possible but if not, the trade-off might be worth it
from tengo.
I submitted a pull request for this: #433
from tengo.
Related Issues (20)
- provide compiled.CloneWithoutGlobals() or make compiled's fields accessible
- Is there a example on the use of `Regexp`
- VSCode Extention Support & Monaco-editor language support, EBNF is wanted.
- Does Tengo Playground support code format or code compress?
- [Performance Improvement] Using pool to avoid stack and frames memory allocation
- Any plan to add settrace() functionality to VM?
- Changing Owners? HOT 2
- Isolated VM possible ? HOT 2
- Ability to call a CompiledFunc from a UserFunc @kcsampson this functionality is now available in the `tengo2` branch. The `Callable` interface and `CallableFunc` signatures have changed, so you might need to update your code to support that, but you will be able to call back to tengo code from go code provided you make the call from the same goroutine the VM is running on. HOT 1
- Support for centralized configuration and shared variables in separate Tengo scripts HOT 1
- FromInterface support HOT 1
- binaryop and equals diff HOT 1
- Lack of means to obtain vm context
- UX improvement: conditionalize the installation of rescue handler...
- [question] How can I register native type into script? HOT 1
- FYI: wasm-compiled tengo playground running in a browser HOT 2
- Allow removal of specific attributes from builtin module
- Is there a plan to develop a VSCode plugin for Tengo to support Tengo code debugging?
- Map-object methods
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tengo.