Skip to content

Commit

Permalink
Merge pull request #3067 from wowsims/reduce_batch_memory
Browse files Browse the repository at this point in the history
Reduced batch memory usage
  • Loading branch information
lologarithm authored May 11, 2023
2 parents 5affa7b + a68516e commit 9ea6df0
Show file tree
Hide file tree
Showing 6 changed files with 22,518 additions and 22,507 deletions.
18,388 changes: 9,194 additions & 9,194 deletions assets/database/db.json

Large diffs are not rendered by default.

26,614 changes: 13,307 additions & 13,307 deletions assets/database/leftover_db.json

Large diffs are not rendered by default.

11 changes: 10 additions & 1 deletion sim/core/bulksim.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@ func (b *bulkSimRunner) Run(pctx context.Context, progress chan *proto.ProgressM
if player.GetDatabase() != nil {
addToDatabase(player.GetDatabase())
}
// reduce to just base party.
b.Request.BaseSettings.Raid.Parties = []*proto.Party{b.Request.BaseSettings.Raid.Parties[0]}
// clean to reduce memory
player.Database = nil

// Gemming for now can happen before slots are decided.
// We might have to add logic after slot decisions if we want to enforce keeping meta gem active.
Expand Down Expand Up @@ -171,7 +175,12 @@ func (b *bulkSimRunner) Run(pctx context.Context, progress chan *proto.ProgressM
allCombos := generateAllEquipmentSubstitutions(ctx, baseItems, b.Request.BulkSettings.Combinations, distinctItemSlotCombos)

validCombos := []singleBulkSim{}
count := 0
for sub := range allCombos {
count++
if count > 1000000 {
panic("over 1 million combos, abandoning attempt")
}
substitutedRequest, changeLog := createNewRequestWithSubstitution(b.Request.BaseSettings, sub, b.Request.BulkSettings.AutoEnchant)
if isValidEquipment(substitutedRequest.Raid.Parties[0].Players[0].Equipment) {
validCombos = append(validCombos, singleBulkSim{req: substitutedRequest, cl: changeLog, eq: sub})
Expand Down Expand Up @@ -282,7 +291,7 @@ func (b *bulkSimRunner) Run(pctx context.Context, progress chan *proto.ProgressM
}

func (b *bulkSimRunner) getRankedResults(pctx context.Context, validCombos []singleBulkSim, iterations int64, progress chan *proto.ProgressMetrics) ([]*itemSubstitutionSimResult, *itemSubstitutionSimResult, error) {
concurrency := (runtime.NumCPU() - 1) * 2
concurrency := runtime.NumCPU() + 1
if concurrency <= 0 {
concurrency = 2
}
Expand Down
2 changes: 1 addition & 1 deletion tools/io_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ func WriteProtoArrayToBuilder(arrInterface interface{}, builder *strings.Builder
builder.WriteString("\":[\n")

for i, elem := range arr {
jsonBytes, err := protojson.MarshalOptions{}.Marshal(elem.(googleProto.Message))
jsonBytes, err := protojson.MarshalOptions{UseEnumNumbers: true}.Marshal(elem.(googleProto.Message))
if err != nil {
log.Printf("[ERROR] Failed to marshal: %s", err.Error())
}
Expand Down
8 changes: 5 additions & 3 deletions ui/core/components/individual_sim_ui/bulk_tab.ts
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ export class BulkTab extends SimTab {

private storeSettings() {
const settings = this.createBulkSettings();
const setStr = BulkSettings.toJsonString(settings)
const setStr = BulkSettings.toJsonString(settings, {enumAsInteger: true})
window.localStorage.setItem(this.getSettingsKey(), setStr);
}

Expand Down Expand Up @@ -615,16 +615,18 @@ export class BulkTab extends SimTab {
});

searchButton.classList.add('btn', 'btn-secondary', 'w-100', 'bulk-settings-button');
searchButton.innerHTML = '<i class="fa fa-search"></i> Add Item';
const baseSearchHTML = '<i class="fa fa-search"></i> Add Item';
searchButton.innerHTML = baseSearchHTML;
searchButton.addEventListener('click', () => {
if (searchText.style.display == "none") {

searchButton.innerHTML = 'Close Search Results';
allItems = this.simUI.sim.db.getAllItems().filter((item) => {
return canEquipItem(item, this.simUI.player.spec, undefined);
})
searchText.style.display = "block";
searchText.focus();
} else {
searchButton.innerHTML = baseSearchHTML;
searchText.style.display = "none";
searchResults.innerHTML = "";
}
Expand Down
2 changes: 1 addition & 1 deletion ui/core/worker_pool.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ export class WorkerPool {
}

async bulkSimAsync(request: BulkSimRequest, onProgress: Function): Promise<BulkSimResult> {
console.log('bulk sim request: ' + BulkSimRequest.toJsonString(request));
console.log('bulk sim request: ' + BulkSimRequest.toJsonString(request, {enumAsInteger: true}));
const worker = this.getLeastBusyWorker();
const id = worker.makeTaskId();
// Add handler for the progress events
Expand Down

0 comments on commit 9ea6df0

Please sign in to comment.