Теория.. FIFO



Posted by Валентин, Донецк (195.58.228.67) on February 05, 2001 at 11:47:20:

In Reply to: Еще раз о вычислительной сложности алгоритмов posted by Анатолий Анимица on February 04, 2001 at 13:07:28:

Высылаю временной профиль на прошлое мое сообщение 3275. Используемый алгоритм работает на том предприятии, где произошло замедление работы, а показанным на ПП я хотел заменить этот.

Не хочу утверждать, но причина, как мне кажется, в сложности алгоритма, т.е. так, как ответил А.Анимица в своем сообщении 3277 (спасибо, что откликнулись). Если я правильно его понял, то у меня 5-ть циклов, связанных с вычислением. Так вот мой вопрос и состоял в том:

1. Или модернизировать данный алгоритм
2. Или применить принципиально новый алгоритм.

Правда, к сожалению, на принципиально новый алгоритм у меня сейчас нет ни одного предложения.

Еще раз хочу сказать:

1. Замена erase на nerase не дала принципиального выигрыша в скорости.
2. Если бы вообще не стирать факт партии то, естественно, скорость поднялась бы. Но как тогда?
3. Ну, и может, совсем не нужно переписывать оставшиеся партии по новой, задавая номера партий с единицы. (Но это тогда будет продолжаться из года в год). Хотя можно делать это в конце года. Вес-таки это 16.5%, согласно профиля.

Спасибо также В.Секретеву. Профиль нужно было поместить сразу. Очевидно, сказывается, что я новичок на ПП.

Вpеменной пpофиль файла-коэффициента FIFOT1

Количество выполнений: 9
На это количество выполнений потpебовалось 13895 мс = 100%
Распpеделение вpемени по стpокам исходного текста в относительных %, и мс:

~ ~¦0001 * Реализация товара по методу ФИФО
~ ~¦0002 ******************* Расчет себестоимости отгрузки методом ФИФО
~ ~¦0003 SS = 0 ; US = 0 ; ST = 0
~ ~¦0004 # T
0.1% 15¦0005 Q = [mk #]
0.2% 30¦0006 ! Q <= 0 goto MimAllF
~ ~¦0007 TV = [n1 #] ; NK = Q
~ ~¦0008 ******************* Расчет себестоимости отгрузки методом ФИФО
~ ~¦0009 rewind facts
~ ~¦0010 : PovtorF
## 14.4% 2006¦0011 search part TV post ?? k_vo ?RP cena ?SP nomer ?NP
~ ~¦0012 **************************************************************
~ 5¦0013 ! [success] = 0 если ни одной партии нет партии, то это значит, что
~ ~¦0014 fact oshb TV k_vo NK NP NP ; goto EndFIFO Запись факта об ошибке
~ ~|0015 **************************************************************
~ ~¦0016 !
~ ~¦0017 **************************************************************
0.3% 39¦0018 ! [tr RP*100+0.5001]/100 < [tr NK*100+0.5001]/100 если количество товара
в данной партии меньше
~ 5¦0019 ST = ST+SP*RP ; SS = SS+ST нераспределенного то, стоимость партии списывается полностью,
~ 5¦0020 NK = NK-RP а нераспределенное по партиям кол-во уменьшается на размер партии
~ ~¦0021 * после этого уничтожается запись о приходе партии за номером NP
0.6% 88¦0022 fact spis TV k_vo RP cena SP NP NP
########## 59.4% 8251¦0023 erase part TV post ?? k_vo ?? cena ?? nomer NP
~ 5¦0024 goto PovtorF и переходим к новой партии
~ ~¦0025 !
~ ~¦0026 ************************************************************************
~ ~¦0027 *в противном случае, то есть если размер очередной партии больше нераспр. остатка,
~ 5¦0028 OP = RP-NK то вычисляется остаток партии товара в натуральном выражении
~ ~¦0029 ********************* Стирание нулевой партии **************************
~ 5¦0030 ! (OP in 0..0.01) | (OP < 0) | (OP = 0)
# 7.0% 974¦0031 erase part TV post ?? k_vo ?PI cena ?? nomer NP
0.2% 30¦0032 fact spis TV k_vo OP cena SP NP NP
~ 5¦0033 goto DalF
~ ~¦0034 !
~ ~¦0035 ******************** Перезапись ненулевой партии ***********************
~ ~¦0036 *rewind facts
0.6% 88¦0037 nerase part TV post ?Z k_vo ?? cena ?SP nomer NP
0.1% 10¦0038 fact part TV post Z k_vo OP cena SP nomer NP
0.1% 10¦0039 fact spis TV k_vo NK cena SP NP NP
~ ~¦0040 goto EndFIFO
~ ~¦0041 : DalF
0.1% 10¦0042 fact spis TV k_vo NK cena SP NP NP
~ ~¦0043 : EndFIFO
~ ~¦0044 ************************************************************************
~ ~¦0045 ST = ST+NK*SP ; US = ST ; SS = SS+ST
~ ~¦0046 $ = US
~ ~¦0047 ************ Сортировка партий товаров по увеличению номера партии ***
~ ~¦0048 rewind facts
## 14.3% 1982¦0049 select part TV post ?? k_vo ?? cena ?? nomer ?NP
0.1% 20¦0050 sort buffer 6
~ ~¦0051 ********** Перезапись номеров партий товаров в порядке возрастания ***
~ ~¦0052 rewind buffer
~ ~¦0053 N = 0
~ ~¦0054 : LLL
~ ~¦0055 N = N+1
0.2% 33¦0056 search part TV post ?AA k_vo ?A1 cena ?A2 nomer ?NP
~ 5¦0057 ! [success]
1.7% 239¦0058 nerase part TV post AA k_vo A1 cena A2 nomer NP
0.2% 30¦0059 fact part TV post AA k_vo A1 cena A2 nomer N
~ ~¦0060 goto LLL
~ ~¦0061 !
~ ~¦0062 : MimAllF
~ ~¦0063 #
~ ~¦0064 stop





Пpишедшие ответы: