- Archive old documentation and test files to `docs/archive/` and `local_tests/`. - Remove various temporary and old files from the project root. - Add `nekocode-rust` analysis tool and its output files (`nekocode/`, `.nekocode_sessions/`, `analysis.json`). - Minor updates to `apps/chip8_nyash/chip8_emulator.nyash` and `local_tests` files. This commit cleans up the repository and sets the stage for further code modularization efforts, particularly in the `src/interpreter` and `src/parser` modules, based on recent analysis.
182 lines
4.8 KiB
Plaintext
182 lines
4.8 KiB
Plaintext
// Comprehensive Memory Stress Test - Built-in Box Operations
|
|
// Phase 8.7: Real-world Memory Management Testing
|
|
// Tests intensive Box method calls and memory allocation patterns
|
|
|
|
print("=== Phase 8.7 Memory Stress Test ===")
|
|
print("Testing intensive Box operations for memory management")
|
|
|
|
// Test 1: Intensive String Operations (Creating many StringBox objects)
|
|
print("Test 1: String Memory Stress")
|
|
|
|
local str_base
|
|
local result
|
|
local i
|
|
local temp_str
|
|
|
|
str_base = "Base"
|
|
result = ""
|
|
|
|
// Create 20 iterations of string concatenation (40 string objects)
|
|
i = 0
|
|
loop(i < 20) {
|
|
temp_str = str_base.concat("_").concat(i.toString())
|
|
result = result.concat(temp_str).concat(",")
|
|
i = i + 1
|
|
}
|
|
|
|
print("String concatenation result length:")
|
|
print(result.length())
|
|
|
|
// Test 2: Substring Memory Stress (Creating substring objects)
|
|
print("Test 2: Substring Memory Stress")
|
|
|
|
local long_string
|
|
local substr_count
|
|
local substr_result
|
|
|
|
long_string = "This_is_a_very_long_string_for_testing_memory_allocation_patterns"
|
|
substr_count = 0
|
|
substr_result = ""
|
|
|
|
// Extract 15 substrings (15 more string objects)
|
|
i = 0
|
|
loop(i < 15) {
|
|
temp_str = long_string.substring(i, i + 5)
|
|
substr_result = substr_result.concat(temp_str).concat("|")
|
|
substr_count = substr_count + 1
|
|
i = i + 1
|
|
}
|
|
|
|
print("Substring operations completed:")
|
|
print(substr_count)
|
|
print("Substring result length:")
|
|
print(substr_result.length())
|
|
|
|
// Test 3: ArrayBox Memory Stress (Creating arrays and accessing elements)
|
|
print("Test 3: ArrayBox Memory Stress")
|
|
|
|
local arr1
|
|
local arr2
|
|
local arr3
|
|
local arr_len
|
|
local element
|
|
|
|
// Create multiple ArrayBox objects
|
|
arr1 = new ArrayBox()
|
|
arr2 = new ArrayBox()
|
|
arr3 = new ArrayBox()
|
|
|
|
print("Created 3 ArrayBox objects")
|
|
|
|
// Test array length operations (multiple method calls)
|
|
arr_len = arr1.length()
|
|
print("Array 1 length:")
|
|
print(arr_len)
|
|
|
|
arr_len = arr2.length()
|
|
print("Array 2 length:")
|
|
print(arr_len)
|
|
|
|
arr_len = arr3.length()
|
|
print("Array 3 length:")
|
|
print(arr_len)
|
|
|
|
// Test 4: Mixed Operations Memory Stress
|
|
print("Test 4: Mixed Operations Memory Stress")
|
|
|
|
local operation_count
|
|
local mixed_result
|
|
local number_str
|
|
local bool_str
|
|
|
|
operation_count = 0
|
|
mixed_result = "Start"
|
|
|
|
// Perform 25 mixed operations (creating many temporary objects)
|
|
i = 0
|
|
loop(i < 25) {
|
|
// String operations
|
|
temp_str = "Item".concat(i.toString())
|
|
mixed_result = mixed_result.concat("_").concat(temp_str)
|
|
|
|
// Integer operations
|
|
number_str = (i * 2).toString()
|
|
mixed_result = mixed_result.concat("(").concat(number_str).concat(")")
|
|
|
|
// Boolean operations
|
|
bool_str = (i > 10).toString()
|
|
mixed_result = mixed_result.concat("[").concat(bool_str).concat("]")
|
|
|
|
operation_count = operation_count + 1
|
|
i = i + 1
|
|
}
|
|
|
|
print("Mixed operations completed:")
|
|
print(operation_count)
|
|
print("Mixed result length:")
|
|
print(mixed_result.length())
|
|
|
|
// Test 5: Rapid Object Creation/Disposal Pattern
|
|
print("Test 5: Rapid Object Creation Pattern")
|
|
|
|
local rapid_count
|
|
local rapid_result_len
|
|
|
|
rapid_count = 0
|
|
|
|
// Create and immediately use objects (tests garbage collection)
|
|
i = 0
|
|
loop(i < 30) {
|
|
// Each iteration creates multiple temporary objects
|
|
temp_str = "Rapid".concat(i.toString()).concat("_Test")
|
|
result = temp_str.substring(0, 10).concat("_End")
|
|
rapid_result_len = result.length()
|
|
rapid_count = rapid_count + 1
|
|
i = i + 1
|
|
}
|
|
|
|
print("Rapid object creation cycles:")
|
|
print(rapid_count)
|
|
print("Final rapid result length:")
|
|
print(rapid_result_len)
|
|
|
|
// Test 6: Nested Method Call Stress
|
|
print("Test 6: Nested Method Call Stress")
|
|
|
|
local nested_count
|
|
local nested_result
|
|
|
|
nested_count = 0
|
|
|
|
// Perform nested method calls (stress the call stack)
|
|
i = 0
|
|
loop(i < 15) {
|
|
// Multiple levels of method chaining
|
|
nested_result = "Start".concat("_").concat(i.toString()).concat("_Mid").concat("_").concat((i * 3).toString()).concat("_End")
|
|
temp_str = nested_result.substring(2, nested_result.length() - 2)
|
|
result = temp_str.concat("_Final").concat(i.toString())
|
|
nested_count = nested_count + 1
|
|
i = i + 1
|
|
}
|
|
|
|
print("Nested method call cycles:")
|
|
print(nested_count)
|
|
print("Final nested result length:")
|
|
print(result.length())
|
|
|
|
// Memory Test Summary
|
|
print("=== Memory Test Summary ===")
|
|
print("String operations: Extensive concatenation and substring")
|
|
print("Array operations: Multiple ArrayBox creation and access")
|
|
print("Mixed operations: Combined string/integer/boolean processing")
|
|
print("Rapid creation: High-frequency object allocation patterns")
|
|
print("Nested calls: Deep method call chains")
|
|
print("=== Test Complete ===")
|
|
|
|
// Calculate total operations estimate
|
|
local total_ops
|
|
total_ops = 20 + 15 + 3 + 25 + 30 + 15 // Sum of all loop iterations
|
|
print("Estimated total Box operations:")
|
|
print(total_ops)
|
|
print("Each operation created multiple temporary objects")
|
|
print("Memory management system successfully handled complex patterns!") |